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方法或[]运算符。