當我將它傳遞給一個方法時圖示與*
陣列,然後重建從它的陣列與所述方法中*
,不保留在陣列的身份:如何在`&`-`&`往返中保存一個proc對象?
a = []
a.object_id # => 69846339548760
def bar *a; a.object_id end
bar(*a) # => 69846339537540
然而,當我轉PROC與&
塊將它傳遞給方法的情況下,然後重建從塊與所述方法中&
一個PROC,該PROC的身份似乎被保留:
pr = ->{}
pr.object_id # => 69846339666160
def foo ≺ pr.object_id end
foo(&pr) # => 69846339666160
是如何PROC對象保留嗎?它被轉換爲塊時不會丟失嗎?這是一種保證行爲嗎?
更:'高清巴茲;放置Proc.new.object_id結束; p = - > {}; p.object_id#⇒9708320; baz &p ;#⇒9708320' – mudasobwa
@mudasobwa這是由於特殊的語法約定。當你在一個方法內創建一個沒有塊的過程時,它指向傳遞給該方法的過程。 – sawa
我知道,謝謝。我的意思是說'Proc.new'實際上不是構造函數。 – mudasobwa