在Java语言中,==是最强的等价性(指针相等):a == b总是暗示a.equals(b)。然而,在Ruby语言中,==比.equals?弱
ruby-1.9.2-rc2 > 17 == 17.0
=> true
ruby-1.9.2-rc2 > 17.equal?(17.0)
=> false那么,我可以从哪里了解更多关于==的信息呢?当我用它比较两个对象时,我应该期待什么样的检查?
发布于 2010-08-03 01:31:08
简单地说,这是你需要知道的:
==比较检查两个值是否相等
eql?检查两个值是否相等且类型相同
equal?检查两个对象是否是一个相同的对象。
关于这一点的一个很好的博客是here。
发布于 2010-08-03 01:32:04
实际上,它们都只是方法,意思是object.==(other_object)等于?表示object.equals?(other_object)
不过,在这种情况下,equals基本上用于散列查找比较,即a_hash1不应该是与a_hash1.0相同的键值对
HTH。-r
发布于 2010-08-03 01:33:54
简单地说,==是一种方法。我认为这解释得很好,here
通常,此方法在后代类中被重写,以提供特定于类的含义。
并给出了一个使用Numeric的示例。
然而,这里有一个陷阱:因为==是左操作数的方法,所以假设a==b的结果与b==a的结果相同并不总是安全的。特别是在a是一个方法调用的情况下,在动态语言中,它不能总是返回相同类型的值。
https://stackoverflow.com/questions/3390219
复制相似问题