加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 21:25:39 所属栏目:大数据 来源:网络整理
导读:Perl 6似乎有一个爆炸的平等运算符。什么是=:=? leg和cmp有什么区别?或eqv和===? 有没有人有一个好的总结? 解决方法 =:=测试如果两个容器(变量或数组或散列项)是别名的,即如果一个变化,另一个变化吗? my $x;my @a = 1,2,3;# $x =:= @a[0] is false$x
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是正则表达式,它是正则表达式匹配 – 等等。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读