青山です。 Mon, Mar 08, 1999 at 09:17:33PM +0900 において Tadayoshi Funaba さん曰く: > あくまで、point to point の考えに忠実になれば、 大きさも変らないハズで > すが、そうなると、方向があること自体がおかしいと、いうことにならないで > しょうか。 引続き電車で例えると、各駅停車(step 1)と特急(step 10)では駅の数 (to_a.size)は変わりますが、これは駅の数(参照点)が変わるだけであり、距 離(size)が変わるわけではありません。そして、方向については上り(step 正) と下り(step 負)が有り得ると思われます。Range の大きさについては差その ものではなく、その絶対値とするのが適切と思われます。 > あと、このインターフェイスだと、step でもよさそうですが、 文字列のこと > を考えると、next はなかなかシックリくるなあ、という気もしてます。 文字列についてはいろいろと難しいですね。a-->z にしてもこれが適切とは限 りませんし。(正規表現の \w も locale によって a-z 以外に対応している言 語もありますし) > その喩えはよくわかります。そういう考えもアリだとは思います。ただ、upto > の前堤を手放すのは、慎重にしたほうがよさそうですね。 step を利用しない限りは max..min の挙動が変わるだけですから、過去との 互換性を持つ書き方をするには a < b のチェックを入れる程度になると思わ れます。これは a < b のチェックせずにおまかせにする方が良くない書き方 と思われるので、良い方向での不便さでしょう。 > # この話は Enumerable と each にまつわる議論ともよく似ていると思う。 Enumerable の場合は each で実現出来る機能はどんどん採り入れてしまって OK と思われますが、Range の場合は upto で実現出来るからといってそれが Range にふさわしいとは限りません。 Enumerable は each 依存ですが、Range は upto 依存ではなく、単に Range の実装に upto が利用されているというだけの関係と思われます。 -- 青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>