【发布时间】:2014-07-24 20:11:02
【问题描述】:
我想在 ruby 中使用
定义一个方法 define_method
在另一个函数中。示例代码如下。
def demo(method_name)
variable = 5
define_method "#{method_name}" do
#stuff
end
end
在新定义的方法中我希望能够访问变量:
variable=5
之前定义的。例如我希望能够做到:
define_method "#{method_name}" do
return variable*variable
end
并得到变量平方。
我希望能够:
demo("squared")
x = squared # => 25
有没有一种方法可以将变量“变量”传递给 define_method,即使它不在同一个范围内?
【问题讨论】:
-
你快完成了.. 什么是阻止你?
-
好吧,我不确定,但块
do #stuff end与variable = 5在同一范围内。即使我错了,该块也可以访问母亲的范围*。检查这个:a = 42; l =-> do; b = 22; l2 = -> do; puts a; end; end; l.call.call;*我不确定正确的标题,所以我编了。 -
我很困惑。您显示的代码正是您想要的。那么,您的问题是什么?
标签: ruby parameter-passing metaprogramming