ふなばです。

At 1999-10-14T13:21:14+0900 (2451465.68141JD),
wakou / fsinet.or.jp (Wakou Aoyama) wrote:

> <=>の0は別に「偽」を表しているわけではないのでは?
> 比較を行うオペレータが同値関係が成り立つ時に偽を返すってのはなんか
> 奇妙だと思うのですが。

wakou> このあたりは難しいですよね。だいたい、-1, 1 もこれが適切とは言いきれま
wakou> せんし。しかしとりあえず、

そういっちゃうと、なんでも言いきれないような気がするんですが、具体的に
どうすればいいのでしょう。

wakou> ((a.to_i <=> b.to_i).nonzero? || a.to_s <=> b.to_s).nonzero? || a.to_f <=> b.to_f                                                                         
wakou> やはりこれはちょっと美しくないですし、

これはそう思います。

ただ、これは、ずらずら並べれば、どうやっても、美しくなりようがないでしょ
う。しかも、対象の数があらかじめ判っていて、その数が少ないときでないと
つかえないと思います。

wakou> [a.to_i, a.to_s, a.to_f] <=> [b.to_i, b.to_s, b.to_f]

wakou> これも Array の機能を利用した応用技であり、そういう応用技が必要という
wakou> 事は、元の仕様が不適切という事は明らかであると思います。

僕はそうでもないと思います。

こういうのがよろしくないとかなると、ある種の言語は不適切なものだらけ
になりませんか。

僕は、C などでよくつかわれているらしい、決り文句を Ruby で、そのままや
ろうとしているのが、よくないのではないかと思います。僕は、とくに仕様が
不適切だと思ったことはないです。

ふなば ただよし