Ruby元编程和参数传递
我想在ruby中使用Ruby元编程和参数传递,ruby,parameter-passing,metaprogramming,Ruby,Parameter Passing,Metaprogramming,我想在ruby中使用 define_method 在另一个函数中。下面是示例代码 def demo(method_name) variable = 5 define_method "#{method_name}" do #stuff end end 在新定义的方法中,我希望能够访问变量: variable=5 这是以前定义的。例如,我希望能够做到: define_method "#{method_name}" do
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
是否有一种方法可以将变量“variable”传递到define_方法中,即使它不在同一范围内?当然可以,而且您所拥有的方法也有效。有什么问题吗
[15] pry(main)> def demo(method_name)
[15] pry(main)* variable = 5
[15] pry(main)* define_method "#{method_name}" do
[15] pry(main)* variable * variable
[15] pry(main)* end
[15] pry(main)* end
=> :demo
[16] pry(main)> demo('squared')
=> :squared
[17] pry(main)> squared
=> 25
当然可以,你所拥有的一切都有用。有什么问题吗
[15] pry(main)> def demo(method_name)
[15] pry(main)* variable = 5
[15] pry(main)* define_method "#{method_name}" do
[15] pry(main)* variable * variable
[15] pry(main)* end
[15] pry(main)* end
=> :demo
[16] pry(main)> demo('squared')
=> :squared
[17] pry(main)> squared
=> 25
你差不多完了。。是什么阻止了你?我不确定,但是block
do#stuff end
与variable=5
在同一范围内。即使我错了,那个块也可以进入母亲的视野*。检查此项:a=42;l=->do;b=22;l2=->do;提出了一个解决方案;结束;结束;l、 call.call代码>*我不确定正确的标题,所以我编造了这个。我很困惑。您显示的代码完全符合您的要求。那么,你的问题是什么?你差不多完成了。。是什么阻止了你?我不确定,但是blockdo#stuff end
与variable=5
在同一范围内。即使我错了,那个块也可以进入母亲的视野*。检查此项:a=42;l=->do;b=22;l2=->do;提出了一个解决方案;结束;结束;l、 call.call代码>*我不确定正确的标题,所以我编造了这个。我很困惑。您显示的代码完全符合您的要求。那么,你的问题是什么?