我正在尝试编写一个脚本来获取一些参数,其中一些参数可能为空。
Ruby 的 OptionParser 似乎不允许这样做并抛出 (OptionParser::InvalidArgument)。
代码:
require 'optparse'
options = {}
OptionParser.new do |opt|
opt.on('--might_be_empty might_be_empty', String) { |o| options[:might_be_empty] = o }
end.parse!
puts "might_be_empty: #{options[:might_be_empty]}"
Run Code Online (Sandbox Code Playgroud)
快乐流:
ruby ./for_stack.rb --might_be_empty "some_real_data"
might_be_empty: some_real_data
Run Code Online (Sandbox Code Playgroud)
当值为空时:
ruby ./for_stack.rb --might_be_empty ""
./for_stack.rb:10:in `<main>': invalid argument: --might_be_empty (OptionParser::InvalidArgument)
Run Code Online (Sandbox Code Playgroud)
我如何告诉 OptionParser 允许空字符串?
不指定强制类型,或使用Object代替String。两者的行为相同。
opt.on('--might_be_empty might_be_empty') { ... }
# ..or
opt.on('--might_be_empty might_be_empty', Object) { ... }
Run Code Online (Sandbox Code Playgroud)
测试:
ruby ./for_stack.rb --might_be_empty "some_real_data"
might_be_empty: some_real_data
ruby ./for_stack.rb --might_be_empty ""
might_be_empty:
Run Code Online (Sandbox Code Playgroud)