Позже я заметил, что документы вводят в заблуждение здесь. Только некоторые закрывающие скобки будут следовать за этим. Это зависит от состояния парсера Perl 6. Это не очень хорошее правило.

л этот пример изДень 10 - операторы фидов Perl 6 2010 Advent Calendar с небольшим изменением.uc для.ucfirst этого больше нет

my @rakudo-people = <scott patrick carl moritz jonathan jerry stephen>;
@rakudo-people
    ==> grep { /at/ } ==> map { .uc } ==> my @who-it's-at;
say ~@who-it's-at;

Я пишу это немного по-другому с некоторыми дополнительными пробелами:

my @rakudo-people = <scott patrick carl moritz jonathan jerry stephen>;
@rakudo-people
    ==> grep { /at/ }
    ==> map { .uc } ==> my @who-it's-at;
say ~@who-it's-at;

Теперь это «поддельное утверждение»:

===SORRY!=== Error while compiling ...
Bogus statement
------>         ==> grep { /at/ }⏏<EOL>
expecting any of:
    postfix
    prefix
    statement end
    term

Это не проблема только с этим примером. Некоторые примеры в текущих документах могут демонстрировать такое же поведение.

Если я добавлюunspace до конца оскорбительной строки снова работает:

my @rakudo-people = <scott patrick carl moritz jonathan jerry stephen>;
@rakudo-people
    ==> grep { /at/ } \
    ==> map { .uc } ==> my @who-it's-at;
say ~@who-it's-at;

Любопытно, что комментарий в конце этой строки не работает. Я бы подумал, что съел бы оскорбительные пробелы.

оператор подачи говорит:

В случае процедур / методов, которые принимают один аргумент или когда первый аргумент является блоком, часто требуется, чтобы вы вызывали скобки

Это работает:

my @rakudo-people = <scott patrick carl moritz jonathan jerry stephen>;
@rakudo-people
    ==> grep( { /at/ } )
    ==> map { .uc } ==> my @who-it's-at;
say ~@who-it's-at;

Но почему это не проблема в первом классе? Что здесь делают пробелы? И какие ситуации входят в «часто необходимые»?

Ответы на вопрос(1)

Ваш ответ на вопрос