はじめまして。
TomoProgです。
あるRubyのソースを読んでいた際にデフォルト引数で気になる仕様を見つけたため、
なぜこのような仕様なのか、詳しい方がおられればご教授いただきたいと思い質問させていただきました。
気になるデフォルト引数の挙動
あるRubyのソースでデフォルト値が設定されている引数の後に、デフォルト値がない引数があるメソッドを見つけました。
ruby
1def method1(a, b=9, c) 2 [a, b, c] 3end 4 5method1(1, 2) #=> [1, 9, 2]
このメソッドを引数2つで呼び出した場合、2つ目に指定した値が第3引数に入り、第2引数はデフォルト値になるという挙動自体は分かったのですが、そもそもなぜこれがArgumentError
にならないのでしょうか?
method1
は引数を3つ受け取るメソッドのため、ArgumentError
にならないとおかしいように思うのです。
Rubyはそういう仕様だと言われればそれまでなのですが、なぜこのような仕様にしたのか詳しい方がおられればご教授願いたいです。
補足情報(FW/ツールのバージョンなど)
shell
1ruby -v 2ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin19]
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/15 22:53
2020/03/16 01:02