Project

General

Profile

Actions

Bug #6581

closed

Array#shuffle, Array#shuffle! の受け付ける引数が想定しづらい

Added by kachick (Kenichi Kamiya) over 12 years ago. Updated over 12 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]
Backport:
[ruby-dev:45722]

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

Also available in: Atom PDF

Like0
Like0Like0Like0