今まで恐る恐る使ってたProcオブジェクトを覚えようプロジェクト
Procオブジェクトは、普通こういう感じで使う(と思う)
つまり、callメソッドを使ってブロック片を呼び出すことができる。
a = Proc.new{|i| i + 1}
a.call(100) #=> 101 が返る
ということは!
とか、遊んでみた。
telephone = Proc.new{|name| p "#{name}\'s phone is ringing!"}
telephone.call("tom")
"tom's phone is ringing!"
さて、もうちょっと踏み込んでみるとこういう処理が書ける
すごーい。気がする。
def do_something (from)
Proc.new{|to| from += " calls " + to + ","}
endp do_something("bush").call("koizumi")
bush = do_something("bush")
koizumi = do_something("koizumi")
bush.call("Rumsfeld") #=>bush calls Rumsfeld,
bush.call("rice") #=>bush calls Rumsfeld,rice,
koizumi.call("fukuda") #=>koizumi calls fukuda,
koizumi.call("abe") #=>koizumi calls fukuda,abe,
よーし、電話かけさせるだけじゃなくて他のことができるようにしてみよう
おー、なんだか汎用的な気分になるね。
class AAA
def initialize(&block)
@ac = block
end
def exe(arg)
@ac.call(arg)
end
enda = AAA.new{|i| "bush loves #{i}"}
b = AAA.new{|him| "koizumi calls #{him}"}
p a.exe("rice") #=> bush loves rice
p b.exe("abe") #=> koizumi calls abe