From: Inaba Hiroto Date: 1998-11-11T01:24:04+09:00 Subject: [ruby-list:10768] Re: case with Class From: toyofuku@juice.or.jp Subject: [ruby-list:10752] Re: case with Class Date: Tue, 10 Nov 1998 05:25:48 +0900 > if (obj1.xxx(obj)) > ... > elsif (obj2.xxx(obj)) > ... > > の意味になる > > case obj with :xxx > when obj1: ... > when obj2: ... > > みたいなのできないですか。(文法は適当です) 効率やエラーチェックはあまり考えてませんが、 require 'delegate' class CaseDelegator < SimpleDelegator def ===(args); send(*args); end end def ok?(obj) CaseDelegator.new(obj) end obj = Array case [:equal, obj] when ok?(Integer); print "Integer\n" when ok?(Array); print "Array\n" end なんてのを思いつきました。 -- 稲葉 浩人 (inaba@st.rim.or.jp)