在纯Ruby中实现“define_singleton_method”
在纯Ruby中实现“define_singleton_method”,ruby,metaprogramming,Ruby,Metaprogramming,define_singleton_method可以轻松访问已定义方法体中的外部范围。大致如下: def messenger(text) Object.new.tap do |m| m.define_singleton_method(:message) { text } end end 不调用define\u singleton\u方法(也不计算字符串)也能达到类似效果吗?你到底希望得到什么?你能提供一个用例吗?您对define_singleton_method有什么问题?我记得
define_singleton_method
可以轻松访问已定义方法体中的外部范围。大致如下:
def messenger(text)
Object.new.tap do |m|
m.define_singleton_method(:message) { text }
end
end
不调用
define\u singleton\u方法(也不计算字符串)也能达到类似效果吗?你到底希望得到什么?你能提供一个用例吗?您对define_singleton_method
有什么问题?我记得在没有使用它的情况下实现了这个功能,但不记得我是如何实现的。@synapse您所说的“(也没有计算字符串)”是什么意思。您对:messenger
的定义旨在对字符串text
进行求值,因此看起来没有转义字符串求值。请说明您的用例是什么。请指出调用messenger的上下文。对于ruby中的大多数东西,通常有多种方法可以实现相同的结果,而不了解您到底想要实现什么,或者为什么这个问题可能属于太广泛的范畴。也许你想找instance\u eval
?@progfan我的意思是不计算一串Ruby代码