Ruby中<=>和==有什么不同?

6

它们有什么不同?作为一个Java背景下的人,它似乎对我来说 <=> 和Java的equals()是相同的,而==用于直接引用比较。这个理解正确吗?

3个回答

14

==仅用于比较两个对象是否相等,而<=>应该返回-1(如果第一个对象较小),0(如果它们相等)和1(如果第一个对象较大)。

如果您为您的类定义了<=>方法,那么所有其他比较运算符也将被定义好( == <>等等)。


3
是的,"<=>" 就像Java的 "compareTo()" 方法一样。 - devoured elysium

3

虽然我不得不推销自己,但是我写了一篇有关Ruby中比较和相等运算符的完整教程:"Ruby基础 - Ruby中的相等运算符"

在这篇文章中,你可以看到所有相等运算符之间的区别,包括 <=>, == 和 ===(以及实现它们的含义,包括hash方法的实现)。


2

==类似于Java中的equals,而<=>则类似于compareTo==比较两个对象并返回它们是否相等。 a <=> b比较两个对象,如果a更大,则返回1,如果它们相同,则返回0,如果b更大,则返回-1


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接