注意此SO不应具有raku标签。这太陈旧/误导了。问题主体中讨论的技术问题不再适用。评论中关于命名/标签的分歧不再适用。我将其留作历史用途,仅使用旧标签。
我正在学习Perl 6,但在理解下面的Perl 6单行代码时遇到了麻烦
我的Perl 6是rakudo-star: stable 2014.04 (bottled)
这很好。数组/列表已排序
[njia@mb-125:~] : perl6 -e 'say [2443,5,33, 90, -9, 2, 764].sort'
-9 2 5 33 90 764 2443
但是这不会对数组/列表进行排序,如果[].sort
有效,那么为什么@s.sort
无效?
[njia@mb-125:~] : perl6 -e 'my @s = [2443,5,33, 90, -9, 2, 764]; @s.sort.say'
2443 5 33 90 -9 2 764
从[]
更改为()
[njia@mb-125:~] : perl6 -e 'my @s = (2443,5,33,90,-9,2,764); @s.sort.say'
-9 2 5 33 90 764 2443
NOTE在此问题中描述的行为在perl6的发行版中已更改。请参阅下面G. Cito的回复。
对于那些可能对此答案感到困惑的人,问题是关于Perl 6,而这都不适用于Perl 5。
声明
my @s = [2443, 5, 33, 90, -9, 2, 764]
创建一个分项数组并将其分配给@s[0]
,因此@s
只有一个元素,对其进行排序是毫无意义的。
但是您可以]说]
@s[0].sort.say
具有您预期的效果
我将不知所措,请参阅CPAN的Perl6文档,其中可以将其视为list vs. array thing-ie