[#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:46368] Re: メソッドの間接?実行

From: しん <dezawa@...>
Date: 2009-09-07 03:02:05 UTC
List: ruby-list #46368
出沢です

有り難うございました、これですっきり書けました。

>   def deletable?(roll)
>     case result = Deletable[roll][@status]
>     when true, false ; result       # true/falseならそのまま
>     when Symbol      ; send(result) # Railsなので send が定義されてました 
>     else             ; raise ArgumentError
>     end
>   end

すっきり == caseもなし  と固定観点が曇らせていました。

今回の新発見 
     case resurt.class
     when True,False ;result
     when Symbol     ; send(result)
     end

   でなくてよいのですね。

  > # ブロックパラメータの中で()が使える
   これ知りませんでした。

rubyの柔軟性ってすごいですね

ご指摘いただいた
>   # 判定メソッド(メソッド名がよくないので意味のわかる名前に改名すべき)
>   private                       # 内部用なのでprivateに
> # 数字よりもシンボルを使ったほうが可読性が上がる

は、実装ではそうしてあります。
シンボルでは値が代入できない(ですよね?)ので、定数で ですが。

>    (1..3).each{|roll|           # 1〜3を表現したいなら範囲オブジェクトを使う
実は roll も status も連続ではないのです。
ですので 定数の列挙の配列としています。


In This Thread

Prev Next