クラスの比較
Rubyのcase文は対象の比較に === メソッドを使ってくれてとても便利。
some_instance = BarClass.new case some_instance when FooClass print 'foo!' when BarClass print 'bar!' else print 'other' end
とかすると some_instance が属するクラスに応じて処理を分けてくれるわけ。
でもまぁ当たり前なんだけど、このおかげで以下のコードは期待通り動いてくれない。
some_class = BarClass case some_class when FooClass print 'foo!' when BarClass print 'bar!' else print 'other' end
BarClassはClassクラスに属するので else が実行されちゃう。
一瞬はまった。