[ruby-list:50860] v2.7でのキーワード引数について
From:
大田黒 俊夫 <toshio.otaguro@...>
Date:
2019-12-29 06:59:34 UTC
List:
ruby-list #50860
Ubuntu の snap でインストールした Ruby を使っていますが,本日自動的に v2.7 にアップデートされました.バージョン表記では ruby 2.7.0dev (2019-12-25 master e1e1d92277) [x86_64-linux] と表示されて,微妙にリリース版ではないように見えるのが気になります. さて,キーワード引数に関する警告が出るようになりました.リリースノートにいろいろ書いてあるのを読んでもよく理解できなかったので,ここで質問します. Sample1 = Struct.new(:s1, :s2, :s3) do def initialize(a1, a2) super(a1, a2, a1 + a2) end end p Sample1.new(1, 2) Sample2 = Struct.new(:s1, :s2, :s3) do def initialize(a1:, a2:) super(a1, a2, a1 + a2) end end p Sample2.new(a1:1, a2:2) 上記のスクリプトを v2.7 で実行すると, #<struct Sample1 s1=1, s2=2, s3=3> kwarg_01.rb:13: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call kwarg_01.rb:9: warning: The called method `initialize' is defined here #<struct Sample2 s1=1, s2=2, s3=3> という警告が出て,Sample2 のキーワード引数が非推奨と言われてしまいます.構造体には正しく代入されているようです. 私はキーワード引数を多用していますが,最後の引数に使わないほうが良い理由は何でしょうか?最も簡単な回避策はどのようなものでしょうか?どなたかご教示いただければ幸いです. 俊(とし)