From: "しん" Date: 2009-09-06T19:59:56+09:00 Subject: [ruby-list:46364] Re: メソッドの間接?実行 出沢です まずお詫びです 返信を作って In-Reply-To References を消すってよくやっているのですが、 今回消し忘れてしまいました。 成瀬さま http://github.com/be9/acl9/tree/master で行けそうです。 が、 これを使うと根本的な作り直しになりそうなのと、そのための読み込み理解に 時間がかかりそうなので(なにしろcomprexな人ですから :) ) 次の機会の作成に向けたいとおもいます。 # Rails って探し当てることができれば何でもありそう。。。 るびきちさま こんなコードになります この def deletable?(roll) で case when をずるずる書かないでなんとか ならないものか、というのが質問です。 class Document # roll [status0, status1] Deletable={ 1 => [:true ,:false ], 2 => [:form1 ,:false ], 3 => [:form2 ,:false ] } def initialize(form,status) @form = form @status = status end def deletable?(roll) case Deletable[roll][@status] when :true ; true when :false; false when :form1; @form==1 when :form2; @form==2 end end end doc=[] [[1,0],[1,1],[2,0],[2,1]].each_with_index{|arg,idx| puts "form #{arg[0]} status #{arg[1]}" doc=Document.new(*arg) [1,2,3].each{|roll| print " roll #{roll} ", doc.deletable?(roll),"\n" } } 期待値は form 1 status 0 roll 1 true roll 2 true roll 3 false form 1 status 1 roll 1 false roll 2 false roll 3 false form 2 status 0 roll 1 true roll 2 false roll 3 true form 2 status 1 roll 1 false roll 2 false roll 3 false