えぐち@エスアンドイーです


2010年3月27日21:01 NARUSE, Yui <naruse / airemix.jp>:
> (2010/03/27 20:26), EGUCHI Osamu wrote:
>> 2010年3月27日19:14 NARUSE, Yui<naruse / airemix.jp>:
>>> よって、String#to_f についてはえぐちさんの指摘は当たらないと考えます。
>> String#to_f については '.’ + メソッド との整合性は必須でないので、
>> 上記の論点は正しいと思います。
>>
>> ただ、浮動小数点リテラル表現と String#to_f は同じであろうと
>> 期待するのはかなり自然なことではないかと思います。
>> #驚き最小の法則
>
> こちらは、一貫性と利便性が衝突する事例という話だと思います。
>
> で、現在同じかというと "10".to_f のような 10 進整数はすでに異なっています。
> また、エッジケースを攻めると 4._9 はエラーになるが、
> "4._9".to_f は 4.9 を返すというような例もあります。

この挙動は厄介です。

Float(”4._9”) ではまた別のエラーになったりします。
どうあるべきだったのかについては明確な論点を持ってません。
ただ、小数点とメソッド呼び出しが曖昧になるケースという意味で
今回の議論と同根だと思います。

> 結局、制約の強いリテラルと、文字列を解釈するのでは条件が異なるわけで、
> 「Ruby のリテラルとして浮動小数点数として解釈されるならば、
> String#to_f でも解釈されるべき」は尊重されるべきだと思いますが、
> その逆は必ずしも成り立つ必要はないと思います。

それも踏まえて、、

Rubyリテラル表現としても使える表現形式を模索してからでも
遅くないように思えます。

  えぐち