Toshです。

最初にちょっと余談(?)

OptionParserは引数のクラスを自動的に変換してくれるのがなかなか便利ですね。
特にacceptで変換の方法をユーザーが後から追加できるのに感動しました。(^^

In message "[ruby-list:20782] Re: opttest.rb of optparse-0.6"
    on 00/02/17, nobu.nakada / nifty.ne.jp <nobu.nakada / nifty.ne.jp> writes:
>> >  変更点についてもっときちんと書いておくべきでした。0.6 と一緒に
>> >0.5.2 も出してますが、これは instance_eval 以外は同じです。
>> >0.5.2 メインの方が良かったでしょうか。
>> ># もし二本立にするなら 0.6 と 0.7 とかの方が良かった?
>> 
>> 今後ともふたつのバージョンが両立するってことでしょうか?
>
>  異論があった以上、ひとまず 0.5.2 の流れは残しときます。というか
>予想して両方出したわけですが、そのうち統一したいです。

ファイル名が衝突してしまう以上2つのバージョンが同時に存在するのは
難しいんではないかと思いました。僕は0.6の仕様に納得しましたので、0.6
一本でも構いません。

>> 0.6.0a と0.6.0bってのはどうでしょう?
>
>  うーん、それはでも RCS が許してくれない(笑)。今のところ3つ目は
>リリースのたびに、2つ目はインターフェースが変わったりとき(とかそ
>の場の気分とか)で上げるって方針でおおむね来てるんで、0.6.0.x と
>0.6.1.x にするよりは 0.6 と 0.7 になるかなって感じで。世間的(?)に
>も(Ruby とかと同じく)偶数/奇数バージョンでって説明しやすいですし。

僕はバージョン番号とか、いつも迷います。(^^;;

>> でも、ふたつバージョンがあると混乱するかも。
>  そう、まず私が。(^^;

(^^;;

>> あ、0.6のOptionParser.newはブロック引数がつくのですね。
>> うう〜む。そうなるとカプセル化やローカル変数のスコープの点で
>> instance_evalよりはyieldの方がよいかもしれません。納得しました。
>
>  ちょっとこういう用途には instance_eval は強力すぎて、ってとこで
>しょうか。なにより self が変わってしまうのが困ったちゃん。
>
>  も一つ非互換性として OctalInteger のような定数が
>OptionParser:: を付けないといけなくなるってのがあるんですが。
>Integer::Octal とかも考えたものの、一ライブラリの分際であまり無関
>係なクラス、とくに組み込みクラスなどにいらん干渉をするのも憚られ
>るので(って ARGV 変えちゃってるじゃん。^^;)。
>
># その辺の定数の module を作って include してもらうって手もあるか。

ARGV 変えてるのは、正直ちょっと戸惑いました。「まぁ、ARGVの処理をする
のはフロントエンドの部分だけだろうからそれほど問題無いか」と言う感じに
今は納得してますけど。

>> ブロックを使う必然性。
>> ブロックを使うと初期化の作業を一箇所にまとめられるのがOO的に
>> (あるいはRuby的に)きれいかと思いました。
>
>  たしかに当初そういう考えで new で指定できるようにしたんですが、
>後からもオプションを追加できるということに気づいて公式仕様とした
>時点で、形骸化したようです。
>
>> カスケーディングはそれほど必要を感じてないですが、
>
>  そう思ってたんですが、こういうのこそカスケーディングが一番ハマ
>るように思えて来てます。

ううむ。個人的には「初期化の処理はすべて*new*にまとまってる」のが
つぼなので、

  obj = OptionParser.new(str)
  obj. { ... }

は意図とちょっと違うんですね。

  obj = OptionParser.new(str).{ ... }

って続けて書けばいいのか。でも、これだとこの記法、ブロックと間違えやす
いかも。

  obj = OptionParser.new(str) do! ... end

もやっぱちょっと紛らわしいですね。

>> obj. { ... }
>> よりか
>> obj do! ... end
>> とかのほうが個人的には好みかも。
>> # あまり記号二つつなげたくないらしい。
>
>  bang method ならぬ bang keyword ですか? どうすればいいのかなぁ。

ただの思い付きですので。(^^;;

---
Tosh
Toshiro Kuwabara