呼び出されたメソッド `… 'はここで定義されています


13

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.7.0の悪夢
— カール

回答:


15

2番目の警告はどういう意味ですか?最初の警告に関連していますか?

1つの警告があり、テキストが2行に分割されています。それは文字通り言う:argsに変換する必要があり**args、ここでは、ここで、この警告を生成コールであるあなたの便宜のためにその定義です。


5
いいね、ありがとう!それは私だけかもしれませんが、これはかなり混乱しています...
— lxxxvi

2
@lxxxviそれはあなただけではありません。私はまったく同じことのためにここに来ました-1つのエラーメッセージである場合、それは1つのエラーメッセージであるように感じます。
— ジェイコブ

私は本当に混乱しています。この警告が表示され、i18n.rbにはそれ以上何もありません。これは単一行の警告で、上の行はアクティブなサポートに関連しています。この警告について私は何をすべきですか?</usr/local/lib/ruby/gems/2.7.0/gems/i18n-1.8.2/lib/i18n.rb:195:警告:呼び出されたメソッド `t 'がここで定義されています
— Hackeron
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.