Ruby 2.7 vient d'être publié et il est livré avec ces nouveaux avertissements pour "Séparation des arguments de position et de mot-clé" (voir leur publication ). Je jouais avec et j'ai découvert qu'il y avait un autre avertissement, que je ne comprends pas.
Exemple:
def multiply(x:, y:)
x * y
end
args = { x: 2, y: 3 }
multiply(args)
# ./warning.rb:7: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
# ./warning.rb:1: warning: The called method `multiply' is defined here
Je pense que le premier avertissement concernant la dépréciation est clair, mais le deuxième avertissement The called method `multiply' is defined here
me porte à confusion.
Que signifie le deuxième avertissement? Est-ce lié au premier avertissement?
Les deux avertissements disparaissent lors de l'ajout **
à l'appel ( multiply(**args)
).
Réponses:
Il y a un seul avertissement avec un texte divisé en deux lignes. Il dit littéralement:
args
devrait être converti en**args
, voici l'appel qui a produit cet avertissement, voici sa définition pour votre commodité .la source