Ruby程序

示例

def call_the_block(&calling); calling.call; end

its_a = proc do |*args|
  puts "It's a..." unless args.empty?
  "beautiful day"
end

puts its_a       #=> "beautiful day"
puts its_a.call  #=> "beautiful day"
puts its_a[1, 2] #=> "It's a..." "beautiful day"

我们已经call_the_block从上一个示例复制了该方法。在这里,您可以看到通过proc使用一个块调用该方法而产生了proc 。您还可以看到块(如方法)具有隐式返回,这意味着proc(和lambda)也是如此。在的定义中its_a,您可以看到,块可以使用splat参数,也可以使用普通参数。它们也可以采用默认参数,但是我想不出一种方法来使用它。最后,您可以看到可以使用多种语法来调用方法-call方法或[]运算符。