From: shugo@... (MAEDA Shugo) Date: 1998-10-31T17:30:47+09:00 Subject: [ruby-list:10534] Re: case with Class 前田です。 >>>>> In [ruby-list:10533] >>>>> "hiwada" == Kazuhiro HIWADA wrote: hiwada> これだけではなんなので、ちょっと提案なんですが、 hiwada> case Hoge hiwada> when proc{|o| Hoge.equal?(o)} hiwada> p "ok!" hiwada> end hiwada> なんてのはどうでしょう。要するに hiwada> class Proc hiwada> def ===(o); call(o) end hiwada> end hiwada> をdefaultにしてしまおうってことですが。 Proc#===を追加するより、継承して別クラスにした方が よいような気がします。 class Cond < Proc def ===(obj) call(obj) end end def cond(&block) return Cond.new(&block) end case i when cond {|i| i > 0} puts "positive" when cond {|i| i < 0} puts "negative" when cond {|i| i == 0} puts "zero" end 問題は、 if i > 0 puts "positive" elsif i < 0 puts "negative" elsif i == 0 puts "zero" end の方が早いということですね(^^; -- 前田 修吾