From: "しん" Date: 2009-09-07T12:02:05+09:00 Subject: [ruby-list:46368] Re: メソッドの間接?実行 出沢です 有り難うございました、これですっきり書けました。 > 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 も連続ではないのです。 ですので 定数の列挙の配列としています。