-5

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
4

2 回答 2

12

那是飞船操作员。然而,它实际上是<=>(不是<==>)。

虽然这不是它的正式名称,但我敢肯定,它是该运算符最常用的名称。它是一个比较运算符,其中

  • 如果 other 小于 self,则返回 1,
  • 如果 other 等于 self,则返回 0
  • 如果 other 大于 self,则返回 -1

它是一个强大的运算符,通过实现它,您可以对自己的类型进行排序并参与许多其他细节,例如 Enumerable mixin。

于 2011-03-31T18:29:37.787 回答
3

你为什么不试试看呢?只需输入您发布的代码,您就可以轻松地看到它没有任何意义,因为<==>它在 Ruby 中不是有效的方法名称。您发布的代码只会引发SyntaxError.

于 2011-03-31T19:28:07.287 回答