所以,我想为一个对象定义一个单例方法,但我想使用闭包来完成它。是否可以使用块定义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