La méthode appelée «…» est définie ici

13

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 hereme 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)).

lxxxvi
la source
1
Quelqu'un sait comment supprimer ces avertissements? J'ai des avertissements de dépréciation écrivant dans le fichier journal, mais cela n'affecte pas ceux-ci. Les spécifications de course sont un cauchemar en rubis 2.7.0
Carl

Réponses:

15

Que signifie le deuxième avertissement? Est-ce lié au premier avertissement?

Il y a un seul avertissement avec un texte divisé en deux lignes. Il dit littéralement: argsdevrait être converti en **args, voici l'appel qui a produit cet avertissement, voici sa définition pour votre commodité .

Aleksei Matiushkin
la source
5
Bien merci! C'est peut-être juste moi, mais c'est assez déroutant ...
lxxxvi
2
@lxxxvi Ce n'est pas seulement vous. Je suis venu ici pour exactement la même chose - s'il s'agit d'un seul message d'erreur, je pense que cela devrait être un message d'erreur.
Jacob
Je suis vraiment confus, je vois cet avertissement et il n'y a rien au-dessus pour i18n.rb, il s'agit d'un avertissement sur une seule ligne, la ligne ci-dessus concerne le support actif. Que dois-je faire à propos de cet avertissement? </usr/local/lib/ruby/gems/2.7.0/gems/i18n-1.8.2/lib/i18n.rb:195: avertissement: la méthode appelée `t 'est définie ici
Hackeron