当有一个方法==
, 方法 !=
被定义为采用该结果并应用 !
给它。 (可能还有 =~
和 !~
。)
与此不同,>=
, 通常表示 >
或 ==
, 实际上独立于 >
和 ==
.这两个定义似乎都不会影响另一个(与 <=
、 <
、 ==
类似)。为什么它们被设计成独立的?
编辑 Broi Satse 指出,在继承 Comparable
的类中,确实存在这样的关系。所以我的问题将被重申:为什么这种关系仅适用于此类类(class)?你什么时候想要(在非 Comparable
类中)有 >=
独立工作 >
和 ==
?
最佳答案
ruby 中有一个名为 Comparable ( http://ruby-doc.org/core-2.2.3/Comparable.html ) 的模块,它实现了所有依赖于单个方法的方法 <=>
.
class A
include Comparable
def initialize(a)
@a = a
end
def <=>(other)
@a <=> other.a
end
protected
def a
@a
end
end
a = A.new(1)
b = A.new(3)
a < b
因为 Comparable 方法只依赖于 <=>
, 重新定义 >
不会影响任何其他方法(因为没有其他方法依赖于它的实现)。
关于ruby - 为什么 `<=` 和 `>=` 与 `<` 、 `>` 和 `==` 无关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34251350/