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

Sir*_*ert 5 ruby methods

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

class Foo
  def bar
    puts "bar"
  end
end
Run Code Online (Sandbox Code Playgroud)

我希望能够操纵"bar"实例方法(例如,传递它).我该怎么做?

我知道我可以让班级保持不变

foo_class = Kernel.const_get("Foo")
Run Code Online (Sandbox Code Playgroud)

有什么类似的东西可以做到Foo#bar吗?

tok*_*and 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"
Run Code Online (Sandbox Code Playgroud)