如何在ruby中获取绑定到变量的实例方法?

时间:2011-05-26 21:01:20

标签: ruby methods

如何在变量中获取实例方法?例如:

class Foo
  def bar
    puts "bar"
  end
end

我希望能够操作“bar”实例方法(例如,传递它)。我该怎么办?

我知道我可以使用

使类保持不变
foo_class = Kernel.const_get("Foo")

我能做些什么来获得Foo#bar

3 个答案:

答案 0 :(得分:7)

您似乎需要UnboundMethod

class Foo
  def initialize(value)
    @value = value
  end

  def bar
    @value
  end
end   

unbound_bar = Foo.instance_method(:bar)
p unbound_bar.bind(Foo.new("hello")).call
#=> "hello"

答案 1 :(得分:0)

方法范围中的

method(:bar)。你可以调用那个,它仍然绑定到self

答案 2 :(得分:0)

请参阅UnboundMethod的Ruby文档。