書き込み対象の日記
Tags: Ruby Programming
Permanent Link: http://www.misho-web.com/diary/200809.html#Diary17
Rubyで5時間ほど悩んでいる問題
module Andy
def foo(&block)
module_eval(&block)
end
end
include Andy
# こういう風にしたい
Andy::foo{p self.inspect; p "ujihisa"}
# ただしujihisaの部分は適当に変えたいので,
s = Proc.new{|username| p self.inspect; p username} #というようにして,更に
r = Proc.new{s.call("ujihisa")} #という風にwrapすると
Andy::foo(&r)
# で確かにうまくいくのだけれど,selfが変わってしまう。
つまり,class "Andy" の中で,p "ujihisa"以外にもp "misho"とかp "star"とかしたいわけです。
誰か,このあたりに詳しい人がいたら教えて下さい><
Trackbacks
ブロックの使い方 By 32nd Diary [2008/09/19(Fri) 10:26:00]
Rubyで5時間ほど悩んでいる問題にトラックバックで反応してみる。とりあえず、module_eval(&block)している理由がよくわかりません。 yield if block_given?とか書くのが普通なんじゃないのかし...
< Commentを書き込む >
[Trackback URL : http://www.misho-web.com/diary/Trackback/20080917]