たけ(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)=熊谷秀武