當使用Proc#調用在Ruby中調用lambda函數時,self
總是以定義函數時的值爲結束,而不是函數的函數值被稱爲,例如:使用Proc時爲自己提供值#調用
$p = lambda { self }
class Dummy
def test
$p.call
end
end
d = Dummy.new
> d.test
=> main
調用test
回報main
,當我打算這回是#<Dummy:0xf794>
- 的Dummy
一個實例,這是在那裏我叫$p
代碼點的self
值。
在Javascript中,我只想傳遞我想成爲「被調用者」的對象作爲call
的第一個參數。 Ruby中是否有這樣的功能,允許我設置一個任意對象,或者至少當前值self
作爲self
的新值,當我調用Proc
時?
我曾經想過'$ p.bind(some_object)'可能會起作用,但顯然'bind'只能用於'UnboundMethod'對象。一個過程可以被強制成一個無約束的方法嗎? – 2009-11-13 14:32:23