呼び出されたメソッド「...」はここで定義されます 質問する

呼び出されたメソッド「...」はここで定義されます 質問する

Ruby 2.7がリリースされましたが、これには次のような新しい警告が含まれています。「位置引数とキーワード引数の分離」(彼らのリリース投稿)。いろいろ試していたら、理解できない別の警告があることに気付きました。

例:

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

廃止に関する最初の警告は明確だと思いますが、2 番目の警告はThe called method `multiply' is defined here私にはわかりにくいです。

2 番目の警告は何を意味しますか? 最初の警告と関連していますか?

**呼び出しに追加すると、両方の警告が消えます( multiply(**args))。

ベストアンサー1

2 番目の警告は何を意味しますか? 最初の警告と関連していますか?

2 行に分割されたテキストを含む単一の警告があります。文字通り次のように書かれています。argsに変換する必要があります**args。この警告を生成した呼び出しは次のとおりです。便宜上、その定義を以下に示します。

おすすめ記事