【发布时间】:2010-09-13 06:06:22
【问题描述】:
所以,我想为一个对象定义一个单例方法,但我想使用闭包来实现。
例如,
def define_say(obj, msg)
def obj.say
puts msg
end
end
o = Object.new
define_say o, "hello world!"
o.say
这不起作用,因为通过“def”定义单例方法不是闭包,所以我得到一个异常,“msg”是未定义的变量或方法。
我想做的是在 Module 类中使用“define_method”方法,但据我所知,这只能用于在类上定义方法......但我想要一个单例方法...
所以,我很想这样写:
def define_say(obj, msg)
obj.define_singleton_method(:say) {
puts msg
}
end
有谁知道我如何在不必创建存储 Proc 的方法然后在单例方法中使用 Proc 的情况下实现这一点? (基本上,我想要一种干净、简洁的方式)
【问题讨论】:
标签: ruby closures singleton-methods