'< ==>'是什么意思?在Ruby?

时间:2011-03-31 18:26:04

标签: ruby-on-rails ruby spaceship-operator

'< ==>'的含义是什么?在Ruby?

示例:代码来自以下类,它以x.x.x

格式比较数字
def <==>(other)
    # Some code here
end

以下代码来自此类,用于命令x.x.x

等数字
class Version

    attr_reader :fst, :snd, :trd
    def initialize(version="")
        v = version.split(".")
        @fst = v[0].to_i
        @snd = v[1].to_i
        @trd = v[2].to_i
    end

    def <=>(other)
        return @fst <=> other.fst if ((@fst <=> other.fst) != 0)
        return @snd <=> other.snd if ((@snd <=> other.snd) != 0)
        return @trd <=> other.trd if ((@trd <=> other.trd) != 0)
    end

    def self.sort
        self.sort!{|a,b| a <=> b}
    end

    def to_s
        @sorted = @fst.to_s + "." + @snd.to_s + "." + @trd.to_s
        #Puts out "#{@sorted}".
    end
end

2 个答案:

答案 0 :(得分:12)

那是spaceship operator。但是,它实际上是<=>(不是<==>)。

虽然这不是它的正式名称,但我敢肯定,它是该运营商最常用的名称。

是一个比较运算符
  • 如果其他人不到自己,请返回1,
  • 如果other等于self,则返回0
  • 如果other大于self,则返回-1

它是一个强大的运算符,只需执行此操作,您就可以对自己的类型进行排序,并参与许多其他细节,例如Enumerable mixin。

答案 1 :(得分:3)

你为什么不尝试一下?只需键入您发布的代码,就可以自己看到它并不意味着什么,因为<==>不是Ruby中的有效方法名称。您发布的代码只会引发SyntaxError