Ruby Language Proc


Ejemplo

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"

Hemos copiado el método call_the_block del último ejemplo. Aquí, puede ver que un proceso se realiza llamando al método proc con un bloque. También puede ver que los bloques, como los métodos, tienen retornos implícitos, lo que significa que procs (y lambdas) también lo tienen. En la definición de its_a , puede ver que los bloques pueden tomar argumentos splat así como los normales; también son capaces de tomar argumentos predeterminados, pero no se me ocurre una forma de trabajar en eso. Por último, puede ver que es posible usar varias sintaxis para llamar a un método, ya sea el método de call o el [] operador.