2013-04-18 54 views

回答

1

您不能按照那樣的名稱獲取方法引用。當你將它傳遞給#_id2ref時,a在你的例子中是零,因爲Ruby試圖找到一個名爲a的局部變量。

a.class => nil 
r.class => nil 

因此,r == a因爲兩者ra是零。

但是,你可以得到一個#method參考#a

> r = ObjectSpace._id2ref(method(:a).object_id) 
=> #<Method: Object#a> 
> r == method(:a) 
=> true 
> r.call 
Hello 
=> nil 
+0

這不是紅寶石嘗試和失敗找到名爲'了'一個局部變量,而該方法'了'被調用,它返回'nil'(因爲'puts'返回'nil')。 – matt

+0

哦,很好。你完全正確。 –