2011-07-12 5 views

答えて

4

case式は、when句のオブジェクトの===演算子を使用します。したがって、それはInteger === kと評価されます。

class Class 
    def ===(obj) 
    obj.kind_of? self 
    end 
end 

がこれは同じパラメータで多くのクラスを受け入れることができます方法のためのものですので、引数の型をテストして適切に処理するために簡単です。ここでのトリッキーな事はClass#===は、本質的に、このように実装されていることです。しかし、あなたが見ることができるように、それはアイデンティティテストではありません。 IntegerがIntegerのインスタンスであるかどうかはテストしています(IntegerはClassのインスタンスです)。

正確なユースケースによっては、ハッシュが目的のものに近い場合があります。

+0

優秀な説明!それは私が解決策を必ず見つけ出すのに役立つわけではありませんが、何が起きているのか説明しています。 –

関連する問題