[ruby-trunk - Bug #6581][Open] Array#shuffle, Array#shuffle! の受け付ける引数が想定しづらい

Issue #6581 has been reported by kachick (Kenichi K.).


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

Author: kachick (Kenichi K.)
Status: Open
Priority: Low
Assignee:
Category: core
Target version:
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]

状況

引数で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が渡された際、例外を出して貰えると統一感と安心感が増すと思います。

Issue #6581 has been updated by naruse (Yui NARUSE).

Status changed from Open to Rejected

ハッシュを引数にとるメソッドは open をはじめとして他にもいろいろありますが、
原則サポートしていないキーが来ても無視します。

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

Author: kachick (Kenichi K.)
Status: Rejected
Priority: Low
Assignee:
Category: core
Target version:
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]

状況

引数で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が渡された際、例外を出して貰えると統一感と安心感が増すと思います。

Issue #6581 has been updated by kachick (Kenichi K.).

御返信有難うございます。

なるほど、確かにそうですよね・・・
Array#sample (これもハッシュ引数受け付けたんですね) と、
Kernel#open共に、次の動きを取ることを確認しました。

  • 最後の引数にハッシュ以外のオブジェクトを渡すとwrong number of argumentsが出る
  • ハッシュの中身自体に関しては、特になにもでない

これらから、Array#shuffleの動きにのみ関して検討すべきでは無い旨が理解出来ました。
お騒がせしました。

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

Author: kachick (Kenichi K.)
Status: Rejected
Priority: Low
Assignee:
Category: core
Target version:
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]

状況

引数で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が渡された際、例外を出して貰えると統一感と安心感が増すと思います。

Issue #6581 has been updated by knu (Akinori MUSHA).

あるキーワード引数の廃止に伴い、指定されていたら警告するようにすることはあるかもしれませんが、
まったく知らないキーワードに関しては将来の拡張性(拡張した際の下位互換性の維持)のために無視する、
というのが慣例になっています。

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

Author: kachick (Kenichi K.)
Status: Rejected
Priority: Low
Assignee:
Category: core
Target version:
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]

状況

引数で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が渡された際、例外を出して貰えると統一感と安心感が増すと思います。