gpt4 book ai didi

ruby - 是否可以使用 block 定义 Ruby 单例方法?

转载 作者:数据小太阳 更新时间:2023-10-29 06:43:16 24 4
gpt4 key购买 nike

所以,我想为一个对象定义一个单例方法,但我想用闭包来实现。

例如,

def define_say(obj, msg)
def obj.say
puts msg
end
end

o = Object.new
define_say o, "hello world!"
o.say

这不起作用,因为通过“def”定义单例方法不是闭包,所以我得到一个异常,“msg”是 undefined variable 或方法。

我想做的是在 Module 类中使用“define_method”方法,但据我所知,这只能用于在类上定义一个方法......但我想要一个单例方法...

所以,我很想这样写:

def define_say(obj, msg)
obj.define_singleton_method(:say) {
puts msg
}
end

有谁知道我如何才能实现这一点,而不必创建一个方法来存储 Proc,然后在单例方法中使用 Proc? (基本上,我想要一种干净的、非 hacky 的方式来做到这一点)

最佳答案

Object#define_singleton_method顺便添加到ruby-1.9.2:

def define_say(obj, msg)
obj.define_singleton_method(:say) do
puts msg
end
end

关于ruby - 是否可以使用 block 定义 Ruby 单例方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/135995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com