gpt4 book ai didi

ruby - OptParse 中带有 2 个参数的选项

转载 作者:数据小太阳 更新时间:2023-10-29 08:20:47 26 4
gpt4 key购买 nike

我正在尝试做一些看起来像这样的事情:

opt_parser = OptionParser.new do |opt|
opt.banner = "Test"
opt.separator ""
opt.on("-t", "--test arg1 arg2", "Test") do |arg1, arg2|
puts arg1
puts arg2
end
end

问题在于它返回 arg1,但 arg2 返回 nil。如何实现?

最佳答案

为给定选项指定值列表的公认方法是重复该选项(例如 -D 选项为被 java 和 C 编译器接受),例如

my_script.rb --test=arg1 --test=arg2

在某些情况下,您的参数的性质可能使您可以使用分隔符而不会引入歧义(例如 -classpath 选项到 java 或,更清楚的是,ps-o 选项),所以如果 arg1arg2 通常永远不能包含逗号 , 那么你也可以接受例如

my_script.rb --test=arg1,arg2

支持上述两种约定的代码大致如下:

require 'optparse'
...
test_vals = []
...
opt_parser = OptionParser.new do |opt|
...
opt.on("-t", "--test=arg1[,...]", "Test") do |arg|
test_vals += arg.split(',')
end
...
end

opt_parser.parse!

puts test_vals.join("\n")

然后:

$ my_script.rb --test=arg1 --test=arg2
arg1
arg2

$ my_script.rb --test=arg1,arg2
arg1
arg2

$ my_script.rb --test=arg1 --test=arg2,arg3
arg1
arg2
arg3

关于ruby - OptParse 中带有 2 个参数的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13224386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com