Perl 6中有哪些重要空间?

bri*_*foy 6 whitespace perl6

Perl 6通过在某些地方不允许空间而在其他地方做工作来清理其前身的一些奇怪案例.空间在哪里重要?有一个完整的参考资料会很高兴,因此我添加了一个社区wiki答案,我会用你的回复答案进行更新.举例赞赏!

但是,还要记住Perl 6有空格,所以你可以使用a \来使空格有效地不可见.例如,您不应该排除子例程名称和它的参数列表,但是如果没有空格,您可以:

sub-name    ( @arguments );  # not okay
sub-name\   ( @arguments );  # okay
Run Code Online (Sandbox Code Playgroud)

bri*_*foy 2

行尾的一些结束花括号(以垂直空白结尾的空白)暗示着语句分隔分号:

\n\n

来自为什么这个 Perl 6 feed 操作符是 \xe2\x80\x9cbogus 语句\xe2\x80\x9d?我有这个例子,其中}for the grep 由于隐含的分号而成为语句的结尾:

\n\n
my @rakudo-people = <scott patrick carl moritz jonathan jerry stephen>;\n@rakudo-people\n    ==> grep { /at/ } \\\n    ==> map { .uc } ==> my @who-it\'s-at;\nsay ~@who-it\'s-at;\n
Run Code Online (Sandbox Code Playgroud)\n\n

归约运算符不允许有空格

\n\n

我忘记在哪里找到这个例子了

\n\n
my @a = [[<foo>],]; # Is that a reduction?\n\nmy @a = [[ <foo>],]; # That space certainly means it\'s not one?\n
Run Code Online (Sandbox Code Playgroud)\n\n

后缀运算符之前没有空格

\n\n
$hash <key>; # Error, indexing uses postfix operators\n$hash<key>; # Works\n\ncall-this-subroutine    ( @arguments );  # Error\ncall-this-subroutine( @arguments ); # Works\n\nmy $x = 5;\nsay $x ++;  # Error\nsay $x++;   # Works\n
Run Code Online (Sandbox Code Playgroud)\n\n

这对于前缀运算符来说不是问题:

\n\n
my $x = 5;\nsay ++ $x;  # Works\nsay ++$x;   # Works\n
Run Code Online (Sandbox Code Playgroud)\n