如何在變量中獲取實例方法?例如:如何獲取綁定到Ruby變量的實例方法?
class Foo
def bar
puts "bar"
end
end
我希望能夠操縱「bar」實例方法(例如,傳遞它)。我該怎麼做?
我知道,我可以得到類
foo_class = Kernel.const_get("Foo")
不斷有什麼相似的,我可以做的就是Foo#bar
?
如何在變量中獲取實例方法?例如:如何獲取綁定到Ruby變量的實例方法?
class Foo
def bar
puts "bar"
end
end
我希望能夠操縱「bar」實例方法(例如,傳遞它)。我該怎麼做?
我知道,我可以得到類
foo_class = Kernel.const_get("Foo")
不斷有什麼相似的,我可以做的就是Foo#bar
?
看來你需要一個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,但是最終的''hello''不應該是''bar「'? – 2011-05-26 22:39:46
是啊,固定.... – tokland 2011-05-26 22:46:13
地獄對耶 – 2017-11-29 10:24:18
method(:bar)
。你可以打電話給那個,它仍然綁定到self
。
請參閱Ruby文檔UnboundMethod。
類方法'self.bar'? – fl00r 2011-05-26 21:03:59
您是否想要動態更改小節方法的工作方式,或者您只是想調用小節方法以便輸出「小節」? – 2011-05-26 21:07:32
@ fl00r:這是行不通的。我沒有這個班的一個實例。 @Scott Gottreu:我想能夠稱呼它。 – 2011-05-26 21:08:05