Il metodo chiamato `... 'è definito qui


13

Ruby 2.7 è stato appena rilasciato e viene fornito con questi nuovi avvertimenti per "Separazione di argomenti posizionali e parole chiave" (vedere il loro Post di rilascio ). Ci stavo giocando e ho scoperto che c'è un altro avvertimento, che non capisco.

Esempio:

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

Penso che il primo avvertimento sulla deprecazione sia chiaro, ma il secondo avvertimento The called method `multiply' is defined heremi confonde.

Cosa significa il secondo avviso? È legato al primo avvertimento?

Entrambi gli avvisi scompaiono quando si aggiunge **alla chiamata ( multiply(**args)).


1
Qualcuno sa come eliminare questi avvisi? Ho avvertimenti di deprecazioni che scrivono nel file di registro, ma non influisce su questi. L'esecuzione delle specifiche è un incubo in ruby ​​2.7.0
Carl

Risposte:


15

Cosa significa il secondo avviso? È legato al primo avvertimento?

C'è un singolo avvertimento con un testo diviso in due righe. Dice letteralmente: argsdovrebbe essere convertito in **args, ecco la chiamata che ha prodotto questo avviso, ecco la sua definizione per comodità .


5
Bello grazie!
Forse

2
@lxxxvi Non sei solo tu. Sono venuto qui esattamente per la stessa cosa: se si tratta di un messaggio di errore, sento che dovrebbe essere un messaggio di errore.
Jacob,

Sono davvero confuso, sto vedendo questo avviso e non c'è nulla sopra di esso per i18n.rb, questo è un avviso a riga singola, la riga sopra si riferisce al supporto attivo. Cosa dovrei fare riguardo a questo avvertimento? </usr/local/lib/ruby/gems/2.7.0/gems/i18n-1.8.2/lib/i18n.rb:195: avviso: qui viene definito il metodo chiamato `t '
Hackeron
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.