与所有不同的Perl 6等式运算符有什么关系? (==,===,eq,eqv,~~,=:=,…)

前端之家收集整理的这篇文章主要介绍了与所有不同的Perl 6等式运算符有什么关系? (==,===,eq,eqv,~~,=:=,…)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Perl 6似乎有一个爆炸的平等运算符。什么是=:=? leg和cmp有什么区别?或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,3

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

腿比较像Perl 5的cmp的字符串,而Perl 6的cmp更聪明,并将比较像< =>和字符串像腿。

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是正则表达式,它是正则表达式匹配 – 等等。

猜你在找的Perl相关文章