首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

关于ruby中<=>运算符的疑问,该怎么处理

2012-03-25 
关于ruby中运算符的疑问在看《Ruby从入门到精通》这本书的过程中,讲到 运算符,需要进行比较时出现了一

关于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方法返回的值是什么, 比较出来就是什么。

热点排行