2012-03-06 6 views
19

जब मैं OptionParser प्रलेखन से this sample चलाएँ: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, नहीं एक बूलियन हो नहीं करना चाहिए?

मुझे इस बारे में कोई जानकारी नहीं है, क्या किसी के पास कोई सलाह है?

+0

जब मैंने लिंक से न्यूनतम अनुभाग चलाया, तो उसने '{: verbose => true}' के साथ-साथ – ScottJShea

+2

'- [no] वर्बोज़ 'निर्दिष्ट किया कि' वर्बोज़ 'एक बूलियन स्विच है। –

उत्तर

48

आपने उल्लेख किया है कि -v विकल्प एक तर्क नहीं है:

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

और अगर आप:

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

आप यह तो एक तर्क लेने के लिए आप ऐसा कहना है चाहते हैं n को एक पूर्णांक होने के लिए मजबूर करना चाहते हैं, फिर:

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

वाई कहां make_switch दस्तावेज़ों (जैसे यह है) पर पढ़ना शुरू करना चाहते हैं और फिर उदाहरणों को उल्टा इंजीनियर बनाना चाहते हैं।

भ्रमित होने के बारे में बुरा मत समझें, OptionParser दस्तावेज़ अब तक की सबसे अच्छी बात नहीं है।

+0

मुझे मिल गया .... मैं अपना कार्यक्रम देखता हूं। और यह काम करता है। बहुत बहुत धन्यवाद । मैं make_switch दस्तावेज़ पढ़ने के लिए जाउंगा। धन्यवाद ! – CrazyLion

संबंधित मुद्दे