From: Akinori MUSHA Date: 2000-12-24T09:57:20+09:00 Subject: [ruby-list:26791] Re: cgi.rb and Regexp::last_match At Fri, 22 Dec 2000 15:03:17 +0900, matz wrote: > In message "[ruby-list:26721] Re: cgi.rb and Regexp::last_match" > on 00/12/22, ARIMA Yasuhiro writes: > > |同様に、String#to_i も変換ができたかどうかを知りたいと思うわけです。 > |数値を表現していない文字列を 0 とするのは、何かに由来する積極的な > |仕様ですか? > > UNIXの伝統ですねえ。Integer()を使ってください。 strtol() の仕様のことでしょうか。strtol() が数値を表現していない 文字列に対して 0 を返すのは、単に long にエラーを示す特別な値が ないからだと思います。無効な文字列だったかどうかは元のポインタと 解析後のポインタが等しいかどうかで分かるわけですし。  一方 Ruby には nil があるので nil を返してやればいいと思います。 strtol() も無効な文字列に対して errno に EINVAL をセットしたり まではしないので、 Ruby の to_i() も例外を出すまでには及ばない、 という考え方はいかがでしょう。 -- / /__ __ Akinori.org / MUSHA.org / ) ) ) ) / FreeBSD.org / Ruby-lang.org Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp "We're only at home when we're on the run, on the wing, on the fly"