gpt4 book ai didi

perl - 我应该如何比较 Perl 引用文献?

转载 作者:行者123 更新时间:2023-12-03 01:33:53 25 4
gpt4 key购买 nike

我想检查两个引用是否指向同一个对象。看来我可以简单地使用

if ($ref1 == $ref2) { 
# cheap numeric compare of references
print "refs 1 and 2 refer to the same thing\n";
}

perlref 中所述,但我依稀记得看到过出于相同目的使用某些函数。我有什么理由不应该使用简单的数值相等测试吗?

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

最佳答案

默认情况下,引用会numify到它们的地址。这些引用地址对于每个引用都是唯一的,因此通常可以用于相等性检查。

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

此外,没有任何东西可以保证 numify 对其地址的引用。例如,对象可以使用重载来影响它们在不同上下文中返回的值。

比直接比较引用的数值是否相等更可靠的方法是使用 Scalar::Util 提供的 refaddr 函数。 ,在确保双方实际上都是引用之后。

关于perl - 我应该如何比较 Perl 引用文献?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4064001/

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