2012-09-03 72 views
3

我有一個塊,我需要傳遞給File.open和另一種方法XXobject#read。由於我將同一個塊傳遞給了這兩種方法,因此我想找到避免重複塊代碼的方法。有沒有辦法避免Ruby中的重複塊?

我試圖定義一個Proc對象,但File.open似乎不接受Proc對象。我想知道爲什麼。據我所知,一個塊被存儲爲一個Proc對象。

有沒有辦法避免Ruby中的重複塊?

+3

使用'&proc_object'作爲參數塊參數 – apneadiving

回答

4

您需要PROC轉換成塊:

blk = Proc.new{puts 1234567890} 

def a; yield; end 

a(&blk) 

1.9.3-194 (main):0 > a(&blk) 
1234567890 
=> nil 
2

前面已經寫評論,你可以將PROC使用&阻止。

一旦你定義your_proc,你可以把它作爲使用&your_proc

0

proc = Proc.new &proc 它擋,可以用作方法

一個ARGS
相關問題