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