たけ(tk)です。 [ruby-list:35256] Re: ((Time.now)..(Time.now+60)) にて matz / ruby-lang.org (Yukihiro Matsumoto) さん 曰く: : |1.7 だとエラーになるんですね。使えてもよさそうな気がするんですが・・。 : : この場合、1秒ずつ増加した範囲を返すんですかね。 : : |http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Range : |: (ruby 1.7 feature: version 1.7 ではさらに first.succ を実行して例外が発 : |: 生しないか確認する) : | : |の問題かと思ったのですが、こっち(↓)は通るんですね・・。 : : 数クラスは特別扱いです。 Range.newの時点でfist.succを点検してはねてしまうと、(↓)の記述に反す ることになりますね。要するに仕様変更。 http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Range (A)1.6 : 範囲演算子のオペランドは互いに <=> で比較できる必要があります。 さらに : Range#each を実行するため には succ メソッドを実行できるものでなければ : いけません。 ↑↓ (B)1.7? ↑↓ 範囲演算されるオブジェクトは互いに <=> で比較でき、かつ、左辺のオブジェ クトでsucc メソッドを実行できるものでなければいけません。 しかし、このように仕様を変更する理由は何なんでしょうか? 数え上げ可能であることは「範囲」の本質的要素ではないような気がするんで すが・・。 範囲オブジェクトの本質的なメソッドである Range#=== では数え上げ可能で ある必要はない。やはり、今まで通り Range#each を実行する時点で succ メソッ ドを実行できるかどうかを調べるのが妥当かと思うのですが・・。 Take_tk = KUMAGAI Hidetake たけ(tk)=熊谷秀武