[#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
成瀬です。
[#46346] Re: ASR 1.8.7 同梱の exerb で生成したプログラムが enumerator を見つけられない
— "(株)ネットフォレスト 植田裕之" <ueda@...>
2009/09/02
植田です。こんにちは。
[#46347] requireが失敗することについて — 北村寛 <kitayuta@...>
北村と申します。最近Rubyを始めた初心者です。
6 messages
2009/09/02
[#46378] 最も低コストの方法は? — 大田黒俊夫 <toshio.otaguro@...>
質問です.
8 messages
2009/09/11
[#46380] Re: 最も低コストの方法は?
— rubikitch@...
2009/09/11
From: 大田黒俊夫 <toshio.otaguro@gmail.com>
[#46386] Rubyの演習問題 — "Tetsuya Kamisawa" <kami@...2000.net>
はじめて投稿させていただきます、神沢と申します。
6 messages
2009/09/12
[#46403] moodle と連携した eラーニング教材開発について — "Hideo Konami" <konami@...>
京都女子大の小波です。
3 messages
2009/09/21
[#46408] html→csv変換|tableのセル結合に対応したものは? — YOSHIIZUMI <t-yoshiizumi@...>
吉泉といいます。
7 messages
2009/09/23
[#46410] 再送;;ruby1.8.7と1.9.2の文字処理について — eiichi_maekawa@...
6 messages
2009/09/24
[#46426] DateTime#to_time — "T.Soejima" <clev@...2.so-net.ne.jp>
相変わらず ruby 勉強中のそえじまです。
11 messages
2009/09/30
[#46432] Re: DateTime#to_time
— masayoshi takahashi <maki@...>
2009/09/30
高橋征義です。『たのしいRuby』の方から来ました。
[#46427] Re: DateTime#to_time
— "NARUSE, Yui" <naruse@...>
2009/09/30
成瀬です。
[#46429] Re: DateTime#to_time
— "T.Soejima" <clev@...2.so-net.ne.jp>
2009/09/30
成瀬さん、ありがとうございます。
[ruby-list:46365] Re: メソッドの間接?実行
From:
rubikitch@...
Date:
2009-09-06 15:11:06 UTC
List:
ruby-list #46365
From: しん <dezawa@aliadne.net>
Subject: [ruby-list:46364] Re: メソッドの間接?実行
Date: Sun, 6 Sep 2009 19:59:56 +0900
> 返信を作って In-Reply-To References を消すってよくやっているのですが、
> 今回消し忘れてしまいました。
返信を作らないで、メーリングリストのメールアドレスで新規メールを作成しましょう。
> この def deletable?(roll) で case when をずるずる書かないでなんとか
> ならないものか、というのが質問です。
やや高度な技法ですが、Kernel#__send__で動的にメソッドを呼ばせる方法があります。
ついでに、よりRubyらしいコードに直しておきました。
class Document
# true/falseはそのまま。シンボルは判定メソッド。
Deletable={
1 => [true ,false ],
2 => [:form1 ,false ],
3 => [:form2 ,false ]
}
def initialize(form,status)
@form = form
@status = status
end
def deletable?(roll)
case result = Deletable[roll][@status]
when true, false ; result # true/falseならそのまま
when Symbol ; __send__(result) # シンボルで指定されたメソッドを動的に呼ぶ
else ; raise ArgumentError
end
end
# 判定メソッド(メソッド名がよくないので意味のわかる名前に改名すべき)
private # 内部用なのでprivateに
def form1() @form == 1 end
def form2() @form == 2 end
end
# ブロックパラメータの中で()が使える
# 数字よりもシンボルを使ったほうが可読性が上がる
[[1,0],[1,1],[2,0],[2,1]].each_with_index{|(form,status), idx|
puts "form #{form} status #{status}"
doc=Document.new(form,status)
(1..3).each{|roll| # 1〜3を表現したいなら範囲オブジェクトを使う
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
--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/
Twit: http://twitter.com/rubikitch/
『Ruby逆引きハンドブック』 http://d.hatena.ne.jp/rubikitch/20090525/rubybook