Ruby 2.7 acaba de ser lanzado y viene con estas nuevas advertencias para "Separación de argumentos posicionales y de palabras clave" (vea su Publicación de lanzamiento ). Estaba jugando con eso y descubrí que hay otra advertencia, que no entiendo.
Ejemplo:
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
Creo que la primera advertencia sobre la desaprobación es clara, pero la segunda advertencia The called method `multiply' is defined here
es confusa para mí.
¿Qué significa la segunda advertencia? ¿Está relacionado con la primera advertencia?
Ambas advertencias desaparecen al agregar **
a la llamada ( multiply(**args)
).
Respuestas:
Hay una sola advertencia con un texto dividido en dos líneas. Literalmente dice:
args
debe convertirse a**args
, aquí está la llamada que produjo esta advertencia, aquí está su definición para su conveniencia .fuente