Float::INFINITYのような無限文字列を表現するString::INFINITYなるものがほしいとの想いから、前回次のような記事を書いたのです。

RubyのStringにもInfinityを!

時を同じくして@ne_sachirou殿も別の解法を用意していました。

Range ‘a’ .. String::INFINITY (Ruby) - c4se記:さっちゃんですよ☆

読み比べて頂ければ明白ですが、ここには「人間の素直さの差」というものが如実に現れているんですね(力の差は置いておいてね)。

自分の解法は('b'..'a')というのはbad value rangeによりArgumentErrorになるという誤解から出発したのです。それでArgumentErrorを拾うなどという横道に逸れました。ところがこれはnilなのです。@ne_sachirou殿の実装の肝はString::INFINITY=''なのですが、これはRangeに対する信用に基づくものです。

今日一日反省したいと思います。

反省の一環として、@ne_sachirou殿のコードに少し手を入れさせて頂きましたのでgistしておきます。

Ruby2.0において、('a'..'zz').sizenilとはビックリです。重量の問題なのでしょうか。

instance method Range#size

ところでこの#unittestメソッドは便利ですね。是非使わせてください。



blog comments powered by Disqus
ruby_pack8

100円〜で好評発売中!
M'ELBORNE BOOKS