3
我需要多次調用getoptlong,但在第一次ARGV爲空之後。在Ruby中,getoptlong破壞性地解析ARGV。有沒有解決的辦法?
我需要多次調用getoptlong,但在第一次ARGV爲空之後。在Ruby中,getoptlong破壞性地解析ARGV。有沒有解決的辦法?
在第一次通話之前捕捉參數,完成後放回參數。聽起來你正在做一些奇怪的事情。
編輯:(擴大)
有很多複製和粘貼在這裏。我認爲,幫助清晰度:
require 'getoptlong'
storage = ARGV.clone
opts = GetoptLong.new(
['--help', '-h', GetoptLong::NO_ARGUMENT ],
[ '--repeat', '-n', GetoptLong::REQUIRED_ARGUMENT ],
[ '--name', GetoptLong::OPTIONAL_ARGUMENT ]
)
puts "Before: #{ARGV.inspect}"
opts.each { |opt, arg| puts "Parsed #{opt} = #{arg}" }
puts "After: #{ARGV.inspect}"
# Copy
storage.each {|x| ARGV << x }
opts = GetoptLong.new(
['--help', '-h', GetoptLong::NO_ARGUMENT ],
[ '--repeat', '-n', GetoptLong::REQUIRED_ARGUMENT ],
[ '--name', GetoptLong::OPTIONAL_ARGUMENT ]
)
puts "Before 2: #{ARGV.inspect}"
opts.each { |opt, arg| puts "Parsed #{opt} = #{arg}" }
puts "After 2: #{ARGV.inspect}"
不太合適。我在類構造函數中調用getoptlong。我在一個文件中多次對這個類(ruby的TestUnit框架)進行子類化。 在方法中重新定義ARGV會在Ruby中生成錯誤 – 2008-12-01 04:09:40