Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在纯Ruby中实现“define_singleton_method”_Ruby_Metaprogramming - Fatal编程技术网

在纯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代码