Ruby Metaprogramming和传递参数

时间:2014-07-24 20:11:02

标签: 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
        return variable*variable
    end

并获得变量平方。

我希望能够:

demo("squared")
x = squared # => 25 

有没有办法可以传递变量"变量"进入define_method,即使它不在同一范围内?

1 个答案:

答案 0 :(得分:4)

当然,你有什么工作。有什么问题?

[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