所以,我想爲一個對象定義一個單例方法,但我想使用閉包來完成它。是否可以使用塊定義Ruby單例方法?
例如,
def define_say(obj, msg)
def obj.say
puts msg
end
end
o = Object.new
define_say o, "hello world!"
o.say
這不起作用,因爲通過「高清」定義一個單身方法不是封閉的,所以我得到一個例外是「味精」是一個未定義的變量或方法。
我想要做的就像在Module類中使用「define_method」方法,但據我所知,這隻能用於在類上定義方法......但我想一個Singleton方法...
所以,我很想把它寫是這樣的:
def define_say(obj, msg)
obj.define_singleton_method(:say) {
puts msg
}
end
有誰知道我可以做到這一點,而無需創建存儲一個Proc,然後使用方法Proc在一個單例方法中? (基本上,我想這樣做的乾淨,無哈克的方式)
輝煌!完美的作品!多謝! – 2008-09-25 21:21:21