首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perl6数组赋值:指针还是复制?

perl6数组赋值:指针还是复制?
EN

Stack Overflow用户
提问于 2016-11-29 23:01:27
回答 1查看 124关注 0票数 3

在perl6中,我希望将数组分配给另一个数组,并使得到的数组成为不同的实体,但似乎直接赋值和克隆都不能满足我的要求。有办法用一个表达式复制数组而不是编写循环例程吗?

代码语言:javascript
复制
To exit type 'exit' or '^D'
> my @a=<a b c d e>
[a b c d e]
> my @b = <1 2 3 4 5 6 7>
[1 2 3 4 5 6 7]
> my @c = @a
[a b c d e]
> @c[3]
d
> @c[3]=3;
3
> @c
[a b c 3 e]
> @a
[a b c d e]
> @c === @a
False
> @c == @a
True          # this is unexpected, @c and @a should be different, right?
> my @x=@a.clone
[a b c d e]
> @x[3]=3
3
> @x
[a b c 3 e]
> @x === @a
False
> @x == @a
True         # unexpected, @x and @a should be distinct things, right?
>

非常感谢!

利斯普格

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-29 23:15:01

如果你不拿@b做比较,你会觉得很不走运,因为它可能会帮助你弄清楚:)

==是数字比较,所以当您要求将一个列表作为一个数字进行比较时,它会选择元素的数量作为表示。Perl 5或6中的运算符强制使用所涉及的类型。如果要测试数组的元素是否相同,请尝试使用eqv操作符。

比较数组的长度,因此以下是正确的:

代码语言:javascript
复制
@a == @c == @x == 5

尝试:

代码语言:javascript
复制
my @a = <a b c d e>;
my @b = <1 2 3 4 5>;
@a eqv @b;

您可能需要查看这些操作符周围的一些文档。智能匹配~~运算符可能更符合您对==的期望。

SIGN https://docs.perl6.org/routine/$TILDE$TILDE

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40877371

复制
相关文章

相似问题

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