gpt4 book ai didi

ruby - 为什么 `<=` 和 `>=` 与 `<` 、 `>` 和 `==` 无关?

转载 作者:数据小太阳 更新时间:2023-10-29 07:42:25 28 4
gpt4 key购买 nike

当有一个方法== , 方法 !=被定义为采用该结果并应用 !给它。 (可能还有 =~!~ 。)

与此不同,>= , 通常表示 >== , 实际上独立于 >== .这两个定义似乎都不会影响另一个(与 <=<== 类似)。为什么它们被设计成独立的?

编辑 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com