From: matz@... (Yukihiro Matsumoto) Date: 2002-05-23T16:40:54+09:00 Subject: [ruby-dev:17203] Re: [RCR] Array#rotate{,!} まつもと ゆきひろです In message "[ruby-dev:17200] Re: [RCR] Array#rotate{,!}" on 02/05/23, "K.Kosako" writes: |Yukihiro Matsumotoさんの |<1022138041.552884.4151.nullmailer@picachu.netlab.jp>から |> shiftのように「いくつずらす」という指定もありえますよね。そ |> の場合はrrotate,lrotateになるのかもしれませんが。いや、逆方 |> 向は負にすればよいからやっぱり一つのメソッドで十分か。 | |引数を回転量にするのなら、 |正がどちら向きの回転か私には覚えられないので、 |rrotate,lrotateがいいです。 アラビア語ではBiDiによって右と左が逆になるとか... # これだと既存のljustとかもダメだな。 しかし、考えてみれば中田さんのもともとの仕様は「indexを先頭 とする」と説明しているものの、「正が先頭方向への回転」でも説 明できちゃいますね。ということは、実は秀逸な仕様(というか説 明)なのかも。 あと、ちゃんと定義した方が良いのは、以下の場合ですね。 * rotate!で配列サイズが1以下の場合 sort!やreverse!は元の配列を返している。rotate!は? (中田 パッチはnilを返している) * indexが大きかった場合、小さすぎた場合 回転量と考えればlenでmoduloを取るべきだが、indexを先頭に すると考えるとmoduloを取るのは変かも(中田パッチはエラー にしてる)。 まつもと ゆきひろ /:|)