【发布时间】:2017-12-29 09:12:56
【问题描述】:
我从Day 10 – Feed operators of the 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;
但为什么在第一种形式中这不是一个问题?空白在这里做什么? “经常需要”又包括哪些情况?
【问题讨论】:
标签: whitespace raku feed-operator