gpt4 book ai didi

operators - 所有不同的 Perl 6 相等运算符有什么关系? (==,===,eq,eqv,~~,= :=, ...)

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

Perl 6 的相等运算符似乎呈爆炸式增长。什么是=:=legcmp 之间有什么区别?或者 eqv===

有人有好的总结吗?

最佳答案

=:=测试两个容器(变量或数组或散列项)是否有别名,即如果一个容器发生变化,另一个容器也会发生变化吗?

my $x;
my @a = 1, 2, 3;
# $x =:= @a[0] is false
$x := @a[0];
# now $x == 1, and $x =:= @a[0] is true
$x = 4;
# now @a is 4, 2, 3

至于其他:===测试两个引用是否指向同一个对象,并且 eqv测试两个事物在结构上是否等效。所以[1, 2, 3] === [1, 2, 3]将为 false(不是同一个数组),但是 [1, 2, 3] eqv [1, 2, 3]将是真实的(相同的结构)。

leg比较 Perl 5 的 cmp 等字符串,而 Perl 6 的 cmp更聪明,会比较像 <=> 这样的数字和类似 leg 的字符串.

13 leg 4   # -1, because 1 is smaller than 4, and leg converts to string
13 cmp 4 # +1, because both are numbers, so use numeric comparison.

最后~~是“智能匹配”,它回答问题“$x匹配$y”。如果$y是一种类型,它是类型检查。如果$y是一个正则表达式,它是正则表达式匹配 - 等等。

关于operators - 所有不同的 Perl 6 相等运算符有什么关系? (==,===,eq,eqv,~~,= :=, ...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/176343/

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