你能定义<=>吗?在 Ruby 中,然后自动定义 ==、>、<、>= 和 <= 吗?
这是我的 Note
类的一部分:
class Note
attr_accessor :semitones, :letter, :accidental
def initialize(semitones, letter, accidental = :n)
@semitones, @letter, @accidental = semitones, letter, accidental
end
def <=>(other)
@semitones <=> other.semitones
end
def ==(other)
@semitones == other.semitones
end
def >(other)
@semitones > other.semitones
end
def <(other)
@semitones < other.semitones
end
end
在我看来,应该有一个我可以包含的模块,它可以根据我的 <=>
为我提供相等和比较运算符代码>方法。有吗?
我猜很多人都会遇到这样的问题。你通常如何解决? (如何使其干燥?)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,只需
include Comparable
- 唯一的要求是定义 spaceship<=>
方法。Yep just
include Comparable
- the only requirement is to have the spaceship<=>
method defined.