Diary - Comment書き込み - 2008年09月17日

書き込み対象の日記

Tags:  Ruby  Programming

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]

書き込みform

名前
(必須)
削除password
(必須)
内容
(Tagは使えません)

名前と削除passを保存する