[#44757] [ruby-trunk - Bug #5533][Assigned] Pathname's raising "invalid sequence" — Shyouhei Urabe <shyouhei@...>
5 messages
2011/11/01
[#44775] [ruby-trunk - Feature #5549][Open] Comparable#min, Comparable#max — Tsuyoshi Sawada <sawadatsuyoshi@...>
4 messages
2011/11/02
[#44796] [Backport93 - Backport #5565][Open] STDOUT.puts writes LF (not CR+LF) in textmode — Usaku NAKAMURA <redmine@...>
6 messages
2011/11/03
[#44800] [ruby-trunk - Bug #5576][Open] [Universal Newline]改行コードが"\r\n"で出力されない — pegacorn jp <subscriber.jp+ruby-redmine@...>
8 messages
2011/11/06
[#44817] [ruby-trunk - Feature #5584][Open] Array#sample! — Masaki Matsushita <glass.saga@...>
12 messages
2011/11/07
[#44837] [ruby-trunk - Bug #5593][Open] Windows上で \\.\ から始まるデバイスをopenするとクラッシュ — 宗介 相良 <snowjail@...>
5 messages
2011/11/08
[#44850] [ruby-trunk - Feature #5606][Open] String#each_match(regexp) — Tomoaki Nishiyama <tomoakin@...>
5 messages
2011/11/10
[#44853] [ruby-trunk - Bug #5608][Open] make -j 16 sometimes fail — Tomoaki Nishiyama <tomoakin@...>
5 messages
2011/11/10
[#44870] Re: [ruby-cvs:40906] kosaki:r33728 (trunk): * test/ruby/test_io.rb (test_fcntl_dupfd): skip if Fcntl::DUPFD — Tanaka Akira <akr@...>
2011/11/13 <kosaki@ruby-lang.org>:
3 messages
2011/11/14
[#44899] Re: [ruby-cvs:41015] kosaki:r33837 (trunk): * configure.in: turn on PIE if --enable-shared is not specified. — Tanaka Akira <akr@...>
2011/11/25 <kosaki@ruby-lang.org>:
3 messages
2011/11/27
[#44904] [ruby-trunk - Bug #5688][Open] Solaris10 で spawn を繰り返すとメモリリークする — okkez _ <redmine@...>
14 messages
2011/11/29
[#44922] [ruby-trunk - Bug #5688] Solaris10 で spawn を繰り返すとメモリリークする
— okkez _ <redmine@...>
2011/12/02
[#44906] [ruby-trunk - Bug #5689][Open] class variables inside of instance methods inside of "class_eval" — Shyouhei Urabe <shyouhei@...>
5 messages
2011/11/30
[ruby-dev:44836] Re: [ruby-trunk - Feature #5584][Open] Array#sample!
From:
Yukihiro Matsumoto <matz@...>
Date:
2011-11-08 13:37:16 UTC
List:
ruby-dev #44836
まつもと ゆきひろです
In message "Re: [ruby-dev:44825] Re: [ruby-trunk - Feature #5584][Open] Array#sample!"
on Mon, 7 Nov 2011 22:53:21 +0900, Yusuke Endoh <mame@tsg.ne.jp> writes:
|2011年11月7日15:43 Masaki Matsushita <glass.saga@gmail.com>:
|> ランダムに選択した要素をレシーバから取り除いて返すメソッドArray#sample!の追加を提案します。
|
|この機能はかつてから要望がありますが、まつもとさんが強硬に
|反対しています。[ruby-core:18104] [ruby-core:18165]
|
|sample! という名前が最大のネックのようですので、他の名前を
|考えるといいと思います。
|(案外まつもとさんの気が変わってる可能性もありますが)
まだ賛成ではありません。
最大の理由がこのメソッドが副作用を積極的に利用・期待している
点で、最近流行のプログラミングスタイルに逆行していることで、
さらにsample!は他のArrayのメソッドと!による意味が変化してい
るという点でこの名前による導入には絶対に賛成しません。
要するに他のArrayクラスの!メソッドの基本的な動作は、「!の無
いものは元のArrayをコピーして操作したものを返す。元の配列は変
化なし。操作によって変化しない場合にはnilを返す※」、というも
のなのに対し、提案されているsample!は「sampleと同じ操作をする
と*同時に*元の配列を変更する」というものです。ここが気に入ら
ない。
もちろん、副作用を全否定するわけではないので、このメソッドが
あるとどれだけ便利であるかを力説された上で、適切と思われる名
前を提案していただければ、絶対に無理とまでは言いませんが、ハー
ドルは高いと思います。
※ 正確には Array#slice! はこの原則に従ってませんが、だからと
いって原則に従ってメソッドを増やすつもりはありません
まつもと ゆきひろ /:|)