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

use*_*568 -5 ruby ruby-on-rails spaceship-operator

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

示例:代码来自以下类,用于比较格式中的数字x.x.x,

def <==>(other)
    # Some code here
end
Run Code Online (Sandbox Code Playgroud)

以下代码来自此类命令数字,如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
Run Code Online (Sandbox Code Playgroud)

Mat*_*eer 12

那是宇宙飞船运营商.但实际上<=>(不是<==>).

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

  • 如果其他人不到自己,则返回1,
  • 如果other等于self,则返回0
  • 如果other大于self,则返回-1

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