在BasicObject中动态定义方法

时间:2014-05-02 22:25:26

标签: ruby metaprogramming

是否可以在BasicObject内动态定义实例方法?如果是这样,怎么样?

class BasicObject
  def foo
    bar = "some_method_name"
    # I want to define a method `bar`
  end
end

1 个答案:

答案 0 :(得分:0)

您可以使用:define_method符号作为send方法的参数来为您创建其他方法,

Class BasicObject

  def foo
    input = "bar"

    BasicObject.send(:define_method, input) do
      puts "baz!"
    end
  end

end

b = BasicObject.new
b.foo
b.bar
# => "baz!"