我有一个块需要传递给File.open
和另一个方法XXobject#read
。由于我将同一个块传递给这两个方法,我想找到一种避免重复块代码的方法。
我尝试定义Proc
对象,但File.open
似乎不接受Proc
对象。我想知道为什么。据我所知,一个块存储为Proc
对象。
有没有办法避免Ruby中的重复块?
答案 0 :(得分:4)
您需要将Proc转换为Block:
blk = Proc.new{puts 1234567890}
def a; yield; end
a(&blk)
1.9.3-194 (main):0 > a(&blk)
1234567890
=> nil
答案 1 :(得分:2)
正如评论中所写,您可以使用&
将proc转换为阻止。
一旦定义了your_proc
,就可以使用&your_proc
答案 2 :(得分:0)
proc = Proc.new
&proc
它是块,块可以用作方法的参数