Ruby Language proc


Esempio

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"

Abbiamo copiato il metodo call_the_block dall'ultimo esempio. Qui, puoi vedere che un proc è fatto chiamando il metodo proc con un blocco. Puoi anche vedere che i blocchi, come i metodi, hanno ritorni impliciti, il che significa che anche procs (e lambda) fanno. Nella definizione di its_a , puoi vedere che i blocchi possono prendere argomenti splat e quelli normali; sono anche in grado di prendere argomenti predefiniti, ma non riesco a pensare a un modo per farlo. Infine, è possibile vedere che è possibile utilizzare più sintassi per chiamare un metodo - il metodo call o [] operatore.