# 前のは何にも考えずに reply してしまったけど,ruby-ext は「拡張モジュー
# ルの作成/整備」のメーリングリストなので ruby-list に持っていきます.
# 続かないだろうけど :-)


In message <20000221173233C.yashi / yashi.com>
yashi / yashi.com writes:

> > でもって,
> > 
> >     opt.each do
> >       |o, v|
> >       case o
> >       when "help"
> >         :
> >       when "version"
> >         :
> >       when "output"
> >         :
> >       end
> >     end
> 
> これだと optionの優先順位とかって大丈夫なんでしょうか?

もともと getoptlong はオプションの優先順位とか,オプション間の依存/排
他関係を意識しないので問題無いです.

# そういうのは `:' ですましてるところに,自分でかく.


オプションはコマンドラインにあらわれた順番でもらえるので,適当に何とか
する.


> begin
>   parser.each_option do |name, arg|
>     eval("$OPT_#{name.sub(/^--/, '').gsub(/-/, '_').upcase} = '#{arg}'")
>   end
> rescue
>   exit -1
> end
> 
> を、そのまま使ってます(^^;

Hash のがすきかな.

  opt = {}
  parser.each { |name, arg| opt[name.sub(/^--/, "")] = arg || true }

とか.ドキュメントのコードは旧来の getopt/parsearg との互換性のために
あるようなものだから.... eval 使う程のものでもないかと.

# もちろん,ここでの eval が性能に影響を与える程オプションが多いわけな
# いんですけど :-)


-- 
柳川和久 @ 東大阪市 . 大阪府                              February 22, 2000
Shortest way may be longest way.