我有一個塊,我需要傳遞給File.open
和另一種方法XXobject#read
。由於我將同一個塊傳遞給了這兩種方法,因此我想找到避免重複塊代碼的方法。有沒有辦法避免Ruby中的重複塊?
我試圖定義一個Proc
對象,但File.open
似乎不接受Proc
對象。我想知道爲什麼。據我所知,一個塊被存儲爲一個Proc
對象。
有沒有辦法避免Ruby中的重複塊?
我有一個塊,我需要傳遞給File.open
和另一種方法XXobject#read
。由於我將同一個塊傳遞給了這兩種方法,因此我想找到避免重複塊代碼的方法。有沒有辦法避免Ruby中的重複塊?
我試圖定義一個Proc
對象,但File.open
似乎不接受Proc
對象。我想知道爲什麼。據我所知,一個塊被存儲爲一個Proc
對象。
有沒有辦法避免Ruby中的重複塊?
您需要PROC轉換成塊:
blk = Proc.new{puts 1234567890}
def a; yield; end
a(&blk)
1.9.3-194 (main):0 > a(&blk)
1234567890
=> nil
前面已經寫評論,你可以將PROC使用&
阻止。
一旦你定義your_proc
,你可以把它作爲使用&your_proc
proc = Proc.new &proc
它擋,可以用作方法
使用'&proc_object'作爲參數塊參數 – apneadiving