gpt4 book ai didi

set - Perl 6 中的元素成员资格如何工作?

转载 作者:行者123 更新时间:2023-12-04 02:14:14 25 4
gpt4 key购买 nike

考虑这个例子

my @fib =  (1,1, * + * … * > 200).rotor(2 => -1); 
say @fib[0] ∈ @fib; # prints True

第一条语句创建一个 Sequence通过使用 rotor 的 2 元素子序列功能。 @fib将包含 (1,1) , (1,2)等等。很明显,序列的第一个元素是序列的一部分。或者是吗?
my @fib =  (1,1, * + * … * > 200).rotor(2 => -1); 
say @fib[0], @fib[0].^name; # OUTPUT: «(1 1)List␤»

所以第一个元素包含一个列表,其值为 (1 1)。好吧,让我们来看看
my $maybe-element = (1,1); 
say $maybe-element, $maybe-element.^name; # OUTPUT: «(1 1)List␤»
say $maybe-element ∈ @fib; # OUTPUT: «False␤»

等等,什么?让我们来看看...
my $maybe-element = @fib[0]; 
say $maybe-element ∈ @fib; # OUTPUT: «True␤»

哼。所以它不是容器。但
say (1,1).List === (1,1).List; # OUTPUT: «False␤»


say (1,1).List == (1,1).List; # OUTPUT: «True␤»

所以我猜 使用对象标识,而不是平等。既然如此,我们如何在列表的集合或序列中检查是否使用此运算符包含独立生成的列表?我们应该使用另一种不同的策略吗?

也许一个子问题是为什么相同的文字会生成完全不同的对象,但可能有一个很好的,并且很可能与安全相关的答案。

最佳答案

So I guess ∈ is using object identity, and not equality.



那是正确的。

That being the case, how can we check, in sets or sequences of lists, if an independently generated list is included using this operator?



您可以使用 .grep.first和您选择的相等运算符(大概您想要 eqv 在这里),或者您可以尝试找到类似列表的值类型。在我的头顶上,我不知道 Perl 6 中是否内置了一个。

关于set - Perl 6 中的元素成员资格如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50524378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com