Actions
Bug #6581
closedArray#shuffle, Array#shuffle! の受け付ける引数が想定しづらい
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]
Backport:
Description
状況¶
引数でHashを渡した際、該当Hashの利用のされ方が想定しづらく感じました。
具体的には、以下のとおりです。
[].shuffle Random.new #1. #=> ArgumentError: wrong number of arguments (1 for 0)
[].shuffle random: Random.new #2. #=> []
[].shuflle {} #3. #=> []
[].shuffle a: false, b: false #4. #=> []
るりま記載を見た限りですが、Hashのペアとして :random => Random のみを
想定しているものだと理解しています。
1のようにHash以外であれば例外を出すのに、
Hashの場合はキーや数を問わずに全て受け付けるという動作に違和感を感じました。
希望¶
2以外の形でHashが渡された際、例外を出して貰えると統一感と安心感が増すと思います。
Updated by naruse (Yui NARUSE) over 12 years ago
- Status changed from Open to Rejected
ハッシュを引数にとるメソッドは open をはじめとして他にもいろいろありますが、
原則サポートしていないキーが来ても無視します。
Updated by kachick (Kenichi Kamiya) over 12 years ago
御返信有難うございます。
なるほど、確かにそうですよね・・・
Array#sample (これもハッシュ引数受け付けたんですね) と、
Kernel#open共に、次の動きを取ることを確認しました。
- 最後の引数にハッシュ以外のオブジェクトを渡すとwrong number of argumentsが出る
- ハッシュの中身自体に関しては、特になにもでない
これらから、Array#shuffleの動きにのみ関して検討すべきでは無い旨が理解出来ました。
お騒がせしました。
Updated by knu (Akinori MUSHA) over 12 years ago
あるキーワード引数の廃止に伴い、指定されていたら警告するようにすることはあるかもしれませんが、
まったく知らないキーワードに関しては将来の拡張性(拡張した際の下位互換性の維持)のために無視する、
というのが慣例になっています。
Actions
Like0
Like0Like0Like0