微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我应该如何比较Perl参考?

我想检查两个引用是否指向同一个对象。看来我可以简单的使用
if ($ref1 == $ref2) { 
 # cheap numeric compare of references
 print "refs 1 and 2 refer to the same thing\n";
}

perlref年所述,但我模糊地记得看到使用某些功能是为了相同的目的。有什么理由我不应该使用简单的数字平等检验吗?

注意我只想知道引用是否指向完全相同的对象。我不寻找一种方法来比较对象的内容

解决方法

认情况下,参考号码将其编号到其地址。这些引用地址对于每个引用是唯一的,因此它通常可以用于相等检查。

但是,在您显示代码段中,您首先必须确保$ ref1和$ ref2都是实际引用的。否则,由于包含引用地址的常规标量,您可能会收到不正确的结果。

此外,没有什么可以保证对其地址进行numify的引用。例如,对象可以使用重载来影响他们在不同上下文中返回的值。

比直接比较数字相等的引用更为坚实的方法是使用由Scalar::Util提供的refaddr函数,确保双方实际上都是引用。

原文地址:https://www.jb51.cc/Perl/173204.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐