Perl 6中()和[]之间的差异

问题描述 投票:10回答:2

注意此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的回复。

perl6
2个回答
9
投票

对于那些可能对此答案感到困惑的人,问题是关于Perl 6,而这都不适用于Perl 5。

声明

my @s = [2443, 5, 33, 90, -9, 2, 764]

创建一个分项数组并将其分配给@s[0],因此@s只有一个元素,对其进行排序是毫无意义的。

但是您可以]说]

@s[0].sort.say

具有您预期的效果


4
投票

我将不知所措,请参阅CPAN的Perl6文档,其中可以将其视为list vs. array thing-ie

© www.soinside.com 2019 - 2024. All rights reserved.