OptionParser में मैं एक विकल्प अनिवार्य कर सकता हूं, लेकिन अगर मैं उस मान को छोड़ देता हूं तो यह निम्न कमांड लाइन पार्सिंग को खराब कर मूल्य के रूप में निम्न विकल्पों का नाम लेगा। यहाँ एक परीक्षण का मामला है कि विकल्पों में से मूल्यों गूँज है:मैं रूबी ऑप्शन पार्सर में लापता अनिवार्य तर्क कैसे संभाल सकता हूं?
$ ./test_case.rb --input foo --output bar
output bar
input foo
अब पहले विकल्प के लिए मूल्य बाहर छोड़:
$ ./test_case.rb --input --output bar
input --output
वहाँ यह को रोकने के लिए किसी तरह के रूप में एक और विकल्प नाम ले जा रहा है एक कीमत? धन्यवाद!
यहाँ परीक्षण का मामला कोड है:
#!/usr/bin/env ruby
require 'optparse'
files = Hash.new
option_parser = OptionParser.new do |opts|
opts.on('-i', '--input FILENAME', 'Input filename - required') do |filename|
files[:input] = filename
end
opts.on('-o', '--output FILENAME', 'Output filename - required') do |filename|
files[:output] = filename
end
end
begin
option_parser.parse!(ARGV)
rescue OptionParser::ParseError
$stderr.print "Error: " + $! + "\n"
exit
end
files.keys.each do |key|
print "#{key} #{files[key]}\n"
end
हाँ ... कि परीक्षण का मामला हल करती है, लेकिन मैं वास्तव में आशा करती हूं कि मैं OptionParser.new ब्लॉक जहां से वह संबंधित के भीतर ऐसा कर सकते हैं। आप एक/pattern/को ऑन() कॉल में शामिल करने में सक्षम होना चाहिए, जो कि किसी भी तर्क से मेल खाना चाहिए - लेकिन मुझे अभी तक यह काम नहीं मिल रहा है। धन्यवाद! –