它们有什么不同?作为一个Java背景下的人,它似乎对我来说 <=> 和Java的equals()是相同的,而==用于直接引用比较。这个理解正确吗?
它们有什么不同?作为一个Java背景下的人,它似乎对我来说 <=> 和Java的equals()是相同的,而==用于直接引用比较。这个理解正确吗?
==
仅用于比较两个对象是否相等,而<=>
应该返回-1(如果第一个对象较小),0(如果它们相等)和1(如果第一个对象较大)。
如果您为您的类定义了<=>
方法,那么所有其他比较运算符也将被定义好( ==
、<
、>
等等)。
虽然我不得不推销自己,但是我写了一篇有关Ruby中比较和相等运算符的完整教程:"Ruby基础 - Ruby中的相等运算符"
在这篇文章中,你可以看到所有相等运算符之间的区别,包括 <=>, == 和 ===(以及实现它们的含义,包括hash方法的实现)。
==
类似于Java中的equals
,而<=>
则类似于compareTo
。 ==
比较两个对象并返回它们是否相等。 a <=> b
比较两个对象,如果a
更大,则返回1,如果它们相同,则返回0,如果b
更大,则返回-1
。