Rubyのcase式で気を付けること への追記
Qiitaに載せた『Rubyのcase式で気を付けること』でcase式の評価に
Rangeオブジェクトを使う時の注意点を書いたけど、
Classオブジェクトの方が問題が発生し易いかな?
オブジェクトの素性を調べる時に Object#class を使用しないでね
def caution_case(obj) case obj when Fixnum "Fixnum" when Float "Float" when Bignum "Bignum" else "other class" end end # ダメなcase caution_case( 1.class ) # => "other class" caution_case( 1.0.class ) # => "other class" caution_case( 9999999999999999999.class ) # => "other class" # 正しいcase caution_case( 1 ) # => "Fixnum" caution_case( 1.0 ) # => "Float" caution_case( 9999999999999999999 ) # => "Bignum"