-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 に答える