首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl 6中()和[]的区别

Perl 6中()和[]的区别
EN

Stack Overflow用户
提问于 2014-06-11 10:22:18
回答 2查看 3.9K关注 0票数 10

Note,所以不应该有raku标签。它太过时了/误导了。问题体中讨论的技术问题已不再适用。关于命名/标签的评论中的分歧不再适用。我只为历史利益而留着它,只在旧标签下。

我正在学习Perl 6,很难理解下面的Perl 6一行。

我的Perl 6是rakudo-star: stable 2014.04 (bottled)

这个很好用。数组/列表被排序

代码语言:javascript
复制
[njia@mb-125:~] : perl6 -e 'say [2443,5,33, 90, -9, 2, 764].sort'
-9 2 5 33 90 764 2443

但是,如果[].sort工作,为什么@s.sort不能对数组/列表进行排序呢?

代码语言:javascript
复制
[njia@mb-125:~] : perl6 -e 'my @s = [2443,5,33, 90, -9, 2, 764]; @s.sort.say'
2443 5 33 90 -9 2 764

[]更改为()

代码语言:javascript
复制
[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的响应。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-11 11:34:54

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

声明

代码语言:javascript
复制
my @s = [2443, 5, 33, 90, -9, 2, 764]

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

不过,你可以说

代码语言:javascript
复制
@s[0].sort.say

有你所期望的效果

票数 10
EN

Stack Overflow用户

发布于 2014-06-20 13:30:53

我将讨论一下CPAN的一些Perl6文档,在这些文档中,可以将其视为一个列表与数组 --即价值序列逐项值序列 (参见doc.perl6.org)。

当然,perl6非常不同,它需要自己的标记,但是仍然是 perl,所以()创建列表和[]创建匿名数组并不奇怪。

代码语言:javascript
复制
> say [2443, 5, 33, 90, -9, 2, 764].WHAT
(Array)
> say (2443, 5, 33, 90, -9, 2, 764).WHAT
(List)

自从第一次提出和回答这个问题以来,人们的行为发生了变化:

代码语言:javascript
复制
> my @s = [2443, 5, 33, 90, -9, 2, 764]
> @s.sort.say
(-9 2 5 33 90 764 2443)

注意,排序后的输出是List,否则@sArray

代码语言:javascript
复制
> @s.sort.WHAT.say
(List)
> @s.WHAT.say
(Array)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24161222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档