proc {}和& proc {}之间有什么区别

时间:2012-02-25 15:13:02

标签: ruby closures

以下用法有何不同

a = proc { puts 'hii' }

def abc(&a)
  a.call
end
abc(&a)

def xyz(c)
  c.call
end
xyz(a)

在下面的实现中,可以将多个块作为参数传递 -

def pqr(c, &t)
  c.call
  yield
  xyz(c)
  abc(&t)
end   
pqr(a) { puts 'block to method'}

1 个答案:

答案 0 :(得分:2)

在这两个中的第一个中,&a参数也将捕获像这样传递的块:

abc {puts "Hello world"}

这与:

相同
xyz(proc {puts "Hello world"})

两者中的另一个只允许两者中的最后一个。