Ruby:如何使用proc而不是块来调用方法

Chr*_*bek 3 ruby

我有一个需要块的方法,但我只有一个Proc对象.如何在没有难看的包装的情况下调用它?

def twice
  yield
  yield
end

p = Proc.new { puts "Hello" }

twice p          # Does not compile "wrong number of parameters"
twice { p.call } # Ugly and difficult for additional parameters
Run Code Online (Sandbox Code Playgroud)

And*_*eko 5

您可以将其转换procblock使用一元&符号(&):

twice &p
# Hello
# Hello
#=> nil
Run Code Online (Sandbox Code Playgroud)