关于ruby中<=>运算符的疑问
在看《Ruby从入门到精通》这本书的过程中,讲到 <=>运算符,需要进行比较时出现了一点问题
代码如下:
class Song
include Comparable
attr_accessor :length
def <=>(other)
@length <=> other.length[color=#0000FF][/color]
end
def initialize(song_name, length)
@song_name = song_name
@length = length
end
end
不知道为什么莫名其妙多出来一个other,而且为什么可以这样用?
这样不是相当于多了一个实例?
[解决办法]
另纠正3楼一下
<=>方法返回-1,0,1这三种结果
不是返回一个长度结果值
一般用在比较对象大小(逻辑上的),或者用在sort collection功能里
[解决办法]
原本是比较对象, 但方法重写了。
结果取决方法返回值, other.length方法返回的值是什么, 比较出来就是什么。