def method1(&proc)
proc.call(1,2,3)
end
method1{ |x,y,z,a| puts a}
Ne renvoie aucune erreur et affiche nil
.
Pourquoi ne vérifie-t-il pas les arguments? Quelle est la logique derrière cela?
def method1(&proc)
proc.call(1,2,3)
end
method1{ |x,y,z,a| puts a}
Ne renvoie aucune erreur et affiche nil
.
Pourquoi ne vérifie-t-il pas les arguments? Quelle est la logique derrière cela?
Les Proc
ne se soucient pas de valider le bon nombre d'arguments mais les lambda's...
def method1(&proc)
proc.call(1,2,3)
end
method1 { |x,y,z,a| puts a}
method1 lambda { |x,y,z,a| puts a }
Résultats :
lambda.rb:1:in `method1': nombre incorrect d'arguments (donné 1, attendu 0) (ArgumentError)
from lambda.rb:6:in `
Depuis les docs ruby:
Pour les procédures créées à l'aide de lambda ou ->(), une erreur est générée si le mauvais nombre de paramètres est passé à un Proc avec plusieurs paramètres. Pour les procédures créées à l'aide de Proc.new ou Kernel.proc, les paramètres supplémentaires sont simplement ignorés.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.