6

他们有什么区别?来自 Java 背景,在我看来,<=> 与 Java 的 equals() 相同,而 == 用于直接引用比较。这是正确的吗?

4

3 回答 3

14

==仅测量两个对象是否相等,而<=>如果第一个对象较小则返回 -1,如果相等则返回 0,如果第一个对象较大则返回 1。

如果你<=>为你的类定义了一个方法,你会得到所有其他的比较操作符(==, <, >, 等等)。

于 2011-07-24T20:28:21.647 回答
3

不能说我不是想推销自己,但我写了一篇关于 Ruby 中的比较和相等运算符的完整教程:“Ruby 基础 - Ruby 中的相等运算符”

在那里,您可以看到所有相等运算符之间的差异,包括 <=>、== 和 ===(以及实现它们的含义,包括哈希方法实现)。

于 2011-07-24T20:33:07.783 回答
2

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

于 2011-07-24T20:31:10.413 回答