0
A
回答
4
当然可以!这对Ruby的飞船运营商的谷歌有帮助。
您需要包含Comparable
模块,然后执行该方法。看看覆盖<=>
的简单的例子:http://brettu.com/rails-daily-ruby-tips-121-spaceship-operator-example/
我会采取从文章的例子:
class Country
include Comparable
attr_accessor :age
def initialize(age)
@age = age
end
def <=>(other_country)
age <=> other_country.age
end
end
对于超载<=>
你并不需要通过包括它包括Comparable
模块,但是,它会将一些有用的方法“混入”您的Country
类,并与之进行比较。
让我们看一些例子:
country1 = Country.new(50)
country2 = Country.new(25)
country1 > country2
# => true
country1 == country2
# => false
country1 < country2
# => false
country3 = Country.new(23)
[country1, country2, country3].sort
# => [country3, country2, country1]
但是,如果没有包括Comparable
模块:
country1 > country2
# => NoMethodError: undefined method `>' for #<Country:...>
祝你好运!
相关问题
- 1. >><<和运算符重载
- 2. C++重载运算符<<和运算符>>
- 3. 未能超载运算符<<(C++)
- 4. C++ 11 <<运算符specefic超载
- 5. 如何超载运算符<<
- 6. 运算符<< C++中的超载
- 7. 超载运算符<<用于ostream
- 8. 超载“<<”运算符的问题
- 9. 与Ruby混淆<=>运算符
- 10. 运算符重载'<<' and '>>'和一个字符串
- 11. 运算符超载[]
- 12. 运算符超载
- 13. 运算符==超载
- 14. 运算符+超载
- 15. 运算符超载
- 16. 运算符超载
- 17. 运算符超载赋值运算符
- 18. C++ << >>运算符
- 19. 按位运算符“>>”和“<<”?
- 20. 运算符重载C++ - 重载输出“<<”运算符
- 21. 获取字符串只在超载>>运算符istream:
- 22. C++运算符“<" and ">”
- 23. PHP运算符<>
- 24. QList <QString>运算符<<
- 25. 你如何在Ruby中重载<<运算符?
- 26. 运算符*超载C++
- 27. 链接超载+运算符
- 28. 运算符+超载C++
- 29. 未能超载运算符+ =
- 30. 结构运算符超载
你可以实现'<=>'而不包括'Comparable' – Stefan 2015-03-02 11:27:39
的确。这种关系是倒退的:当包含“Comparable”时,你需要实现'<=>'。 – 2015-03-02 11:29:34
谢谢澄清!没有包括'可比较的'没有尝试,但我会! – 2015-03-02 11:58:08