如何在变量中获取实例方法?例如:
class Foo
def bar
puts "bar"
end
end
我希望能够操作“bar”实例方法(例如,传递它)。我该怎么办?
我知道我可以使用
使类保持不变foo_class = Kernel.const_get("Foo")
我能做些什么来获得Foo#bar
?
答案 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文档。