«Слишком мало пройдено позиционированием» в методе без аргументов с перехватами типов - PullRequest
5 голосов
/ 23 февраля 2020

В этом сценарии:

role Capturer {
    method capturing(::CLASS:D: $ ) {
        say "Working with ", $?CLASS, " that holds ", $.gist;
    }
}


( <1 2 3 4> but Capturer ).capturing();

Определяется метод без аргументов, capturing, но если я его так называю, я получаю:

Too few positionals passed; expected 2 arguments but got 1
  in method capturing at captured-class.p6 line 4
  in block <unit> at captured-class.p6 line 10

Я могу исправить это, предоставив ему фиктивный аргумент

Too few positionals passed; expected 2 arguments but got 1
  in method capturing at captured-class.p6 line 4
  in block <unit> at captured-class.p6 line 10

, который затем возвращает:

Working with (List+{Capturer}) that holds (1 2 3 4)

Любая идея о том, какого рода аргументы там ждут?

1 Ответ

7 голосов
/ 23 февраля 2020

Любой аргумент на самом деле, потому что вы определили метод NOT без аргументов:

method capturing(::CLASS:D: $ )
                           ^^^

, который определяет один безымянный позиционный аргумент. Который, без какой-либо спецификации типа, примет Any. Итак, ответ на ваш вопрос:

Любая идея о том, какого рода аргументы там ждут?

уже содержит ответ: Any value: -)

...