20

OptionParser ドキュメントからこのサンプルを実行すると、次のようになります。

require 'optparse'
options = {}
OptionParser.new do |opts|
    opts.banner = "Usage: example.rb [options]"
    opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
        options[:verbose] = v
    end
end.parse!
p options
p ARGV

とタイプ: ruby test.rb -v 100、それは返します:

{:verbose=>true}
["100"]

100ブール値ではなく、冗長であってはなりませんか?

私はこれについて何も知りません、誰かアドバイスはありますか?

4

1 に答える 1

52

-vオプションに引数がないことを指定しました:

opts.on("-v", ...

引数を取りたい場合は、次のように言わなければなりません。

opts.on("-v n", "--verbose=n", ...
#-----------^

nそして、強制的に整数にしたい場合は、次のようにします。

opts.on('-v n', '--verbose=n', OptionParser::DecimalInteger, ...

ドキュメントを読み始めてmake_switch(そのまま)、例をリバースエンジニアリングします。

混乱しても気にしないでください。OptionParser のドキュメントはこれまでで最高のものではありません。

于 2012-03-06T03:52:27.903 に答える