caseステートメントで文字列とシンボルの両方と比較したいクラスがあるので、クラスの===()メソッドをオーバーライドするだけで、すべてがゴールドになると思いました。ただし、私の===()メソッドはcaseステートメントの実行中に呼び出されることはありません。何か案は?
以下にいくつかのサンプルコードと、irbセッションで何が起こるかを示します。
class A
def initialize(x)
@x=x #note this isn't even required for this example
end
def ===(other)
puts "in ==="
return true
end
end
irb(main):010:0> a = A.new( "hi")
=>#
irb(main):011:0> case a
irb(main):012:1> when "hi" then 1
irb( main):013:1> else 2
irb(main):014:1> end
=> 2
(メッセージを出力することはなく、とにかく常にtrueを返す必要があります)理想的には、
def ===(other)
#puts "in ==="
return @x.===(other)
end
前もって感謝します。