我把这个例子取自第 10 天 – Perl 6 2010 降临节日历的 Feed 操作员随着轻微的变化.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;
奇怪的是,该行末尾的注释不起作用。我本以为它会吃掉令人讨厌的空白。
The 饲料操作员 says:
对于采用单个参数或第一个参数是块的例程/方法,通常需要使用括号进行调用
这样可行:
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;
但为什么这在第一种形式中不是问题呢?这里的空白是做什么的?而“经常需要”又包括哪些情况呢?