gpt4 book ai didi

ruby - 如何使用当前作用域 (Ruby) 中的变量向对象实例添加方法?

转载 作者:太空宇宙 更新时间:2023-11-03 17:59:24 24 4
gpt4 key购买 nike

这很难解释为一个问题,但这里有一个代码片段:

n = "Bob"
class A
end
def A.greet
puts "Hello #{n}"
end
A.greet

这段代码不起作用,因为 n 仅在 A.greet 被调用时在内部求值,而不是在我添加方法时求值。

有没有办法将局部变量的值传递给 A.greet?

如果 n 是一个函数呢?

最佳答案

使用元编程,特别是define_singleton_method 方法。这允许您使用 block 来定义方法,从而捕获当前变量。

n = "Bob"

class A
end

A.define_singleton_method(:greet) do
puts "Hello #{n}"
end

A.greet

关于ruby - 如何使用当前作用域 (Ruby) 中的变量向对象实例添加方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7616499/

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