Ruby Language Proc


Exemple

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"

Nous avons copié la méthode call_the_block du dernier exemple. Ici, vous pouvez voir qu'un processus est fait en appelant la méthode proc avec un bloc. Vous pouvez également voir que les blocs, comme les méthodes, ont des retours implicites, ce qui signifie que procs (et lambdas) le font aussi. Dans la définition de its_a , vous pouvez voir que les blocs peuvent prendre des arguments splat aussi bien que des arguments normaux; ils sont également capables de prendre des arguments par défaut, mais je ne pouvais pas penser à un moyen de travailler avec. Enfin, vous pouvez voir qu'il est possible d'utiliser plusieurs syntaxes pour appeler une méthode - soit la méthode d' call , soit le [] opérateur