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 <fit0298 / fitec.co.jp> 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"