Wywoływana jest metoda „…”


13

Ruby 2.7 został właśnie wydany i zawiera nowe ostrzeżenia dla „Rozdzielenie argumentów pozycyjnych i słów kluczowych” (patrz ich post w wydaniu ). Bawiłem się tym i odkryłem, że jest jeszcze jedno ostrzeżenie, którego nie rozumiem.

Przykład:

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

Myślę, że pierwsze ostrzeżenie o wycofaniu jest jasne, ale drugie ostrzeżenie The called method `multiply' is defined herejest dla mnie mylące.

Co oznacza drugie ostrzeżenie? Czy ma to związek z pierwszym ostrzeżeniem?

Oba ostrzeżenia znikają podczas dodawania **do wywołania ( multiply(**args)).


1
Czy ktoś wie, jak ukryć te ostrzeżenia? Mam ostrzeżenia o wycofaniu, które zapisuję do pliku dziennika, ale nie ma to wpływu na te. Specyfikacja biegania to koszmar w ruby ​​2.7.0
Carl

Odpowiedzi:


15

Co oznacza drugie ostrzeżenie? Czy ma to związek z pierwszym ostrzeżeniem?

Jest jedno ostrzeżenie z tekstem podzielonym na dwie linie. Mówi dosłownie: argsnależy przekonwertować na **args, oto wezwanie, które wywołało to ostrzeżenie, oto jego definicja dla Twojej wygody .


5
Fajnie, dziękuję! Może to tylko ja, ale to jest dość mylące ...
lxxxvi,

2
@lxxxvi To nie tylko ty. Przybyłem tutaj po dokładnie to samo - jeśli jest to jeden komunikat o błędzie, wydaje mi się, że powinien to być jeden komunikat o błędzie.
Jakub

Jestem naprawdę zdezorientowany, widzę to ostrzeżenie i nie ma nic ponad nim dla i18n.rb, jest to ostrzeżenie jednowierszowe, powyższa linia dotyczy aktywnego wsparcia. Co mam zrobić z tym ostrzeżeniem? </usr/local/lib/ruby/gems/2.7.0/gems/i18n-1.8.2/lib/i18n.rb:195: ostrzeżenie: W tym miejscu zdefiniowano wywoływaną metodę `t '
Hackeron
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.