まつもと ゆきひろです

In message "[ruby-list:26791] Re: cgi.rb and Regexp::last_match"
    on 00/12/24, "Akinori MUSHA" <knu / iDaemons.org> writes:

|strtol() の仕様のことでしょうか。strtol() が数値を表現していない
|文字列に対して 0 を返すのは、単に long にエラーを示す特別な値が
|ないからだと思います。無効な文字列だったかどうかは元のポインタと
|解析後のポインタが等しいかどうかで分かるわけですし。

atoi()の仕様のことです。

| 一方 Ruby には nil があるので nil を返してやればいいと思います。
|strtol() も無効な文字列に対して errno に EINVAL をセットしたり
|まではしないので、 Ruby の to_i() も例外を出すまでには及ばない、
|という考え方はいかがでしょう。

先頭に数値を示す文字列がまったくない場合に限りnilを返すとい
うのはありえない仕様ではないとは思いますが、"1foo"が1で大丈
夫なのに、"foo"が0でだめというのは妙な基準だなあと思います。

いっそ、数値としての表現しか受け付けず、Integer()が例外を返
す局面でnilを返すto_iというのは妥当な仕様だと思いますが、互
換性の観点からは受け入れにくいですね。

                                まつもと ゆきひろ /:|)