[ruby-list:38346] Re: String#reverse! のバグ?

From: matz@... (Yukihiro Matsumoto)
Date: 2003-09-03 06:03:02 UTC
List: ruby-list #38346
まつもと ゆきひろです

In message "[ruby-list:38345] Re: String#reverse!  	のバグ?"
    on 03/09/03, Kazuhiko <kazuhiko@fdiary.net> writes:

|Array の方は、String と逆に、ruby-1.6 だと nil になっていますね...

どうしていつも逆になるんだか。

|個人的には、変化がなくても、nil ではなく「変化のない結果」を返す方が直感
|的だと思いますがいかがでしょうか?

変化があるかどうか分かるのであればnilを返すべきでしょう。
reverseはちょっとわかりにくく("aba".reverseをどう見るかによ
るのですが)、sortではqsortの改造なしには現実的ではありません。

ですから、ありえる選択肢は

  * sort!, reverse!は変化したかどうかをいつも検出し、変化が
    無ければnil。

  * sort!, reverse!は変化があってもなくてもレシーバを返す。

  * sort!は変化が無くてもレシーバを返す。reverseは要素の数が
    1以下であればnilを返す。

のいずれかでしょう。たぶん2番目が現実的かな。

In This Thread