Ruby:破壊的メソッドでレシーバが変更されない場合はnilを返すは変?

what

irb(main):001:0> a = []
=> []
irb(main):002:0> a << 1
=> [1]
irb(main):003:0> a.uniq!
=> nil

うーん。まさかnilになるとは思わなかった・・・。でも、仕様みたいですね。
個人的にはnilになってほしくなかったけど・・・。

参考

[ruby-list:27259] Re: Array#sort!

破壊的メソッドでレシーバーが変更されない場合はnilを返すという原則になっているからと説明されているようです。

[ruby-list:27261] Re: Array#sort!

* いつも配列を返す
* qsortをいじって変更されたかどうかを真面目にチェックする

のいずれに進むべきか「まだ」決めていないということです。


その後はどうなったんだろう?検索したけど、出てこなかったなぁ。

試した環境

ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]