1
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; 放一个; 结束; 结束; l.call.call;'*我不确定正确的标题,所以我弥补了这一点。 –
我很困惑。您显示的代码完全符合您的要求。那么,你的问题是什么? –