Note,所以不应该有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注意这个问题中描述的行为在perl6的发布版本中发生了变化。请参见下面G. Cito的响应。
发布于 2014-06-11 11:34:54
对于那些可能对这个答案感到困惑的人来说,问题是关于Perl 6的,所有这些都不适用于Perl 5。
声明
my @s = [2443, 5, 33, 90, -9, 2, 764]创建一个逐项数组并将其分配给@s[0],因此@s只有一个元素,并且对它进行排序是没有意义的。
不过,你可以说
@s[0].sort.say有你所期望的效果
发布于 2014-06-20 13:30:53
我将讨论一下CPAN的一些Perl6文档,在这些文档中,可以将其视为一个列表与数组 --即价值序列与逐项值序列 (参见doc.perl6.org)。
当然,perl6非常不同,它需要自己的标记,但是仍然是 perl,所以()创建列表和[]创建匿名数组并不奇怪。
> say [2443, 5, 33, 90, -9, 2, 764].WHAT
(Array)
> say (2443, 5, 33, 90, -9, 2, 764).WHAT
(List)自从第一次提出和回答这个问题以来,人们的行为发生了变化:
> my @s = [2443, 5, 33, 90, -9, 2, 764]
> @s.sort.say
(-9 2 5 33 90 764 2443)注意,排序后的输出是List,否则@s是Array
> @s.sort.WHAT.say
(List)
> @s.WHAT.say
(Array)https://stackoverflow.com/questions/24161222
复制相似问题