[#46340] ASR 1.8.7 同梱の exerb で生成したプログラムが enumerator を見つけられない — "(株)ネットフォレスト 植田裕之" <ueda@...>

植田と申します。

10 messages 2009/09/01
[#46344] Re: ASR 1.8.7 同梱の exerb で生成したプログラムが enumerator を見つけられない — arton <artonx@...> 2009/09/01

artonです。

[#46345] Re: ASR 1.8.7 同梱の exerb で生成したプログラムが enumerator を見つけられない — "NARUSE, Yui" <naruse@...> 2009/09/01

成瀬です。

[ruby-list:46364] Re: メソッドの間接?実行

From: しん <dezawa@...>
Date: 2009-09-06 10:59:56 UTC
List: ruby-list #46364
出沢です

まずお詫びです
  返信を作って 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

In This Thread