gpt4 book ai didi

ruby 选项解析器 : how to handle arguments without a prefix (like a required filename)

转载 作者:数据小太阳 更新时间:2023-10-29 07:33:44 25 4
gpt4 key购买 nike

我正在使用 OptionParser第一次。

我想知道的是,如何让 OptionParser 处理没有以特定标志名为前缀的参数。我希望能够写出这样的声明:

myscript.rb -d someoption -b someotheroption filename

其中 filename 是我要处理的文件的名称。它没有任何选项标志作为前缀。我如何使用 OptionParser 解析上述命令,并获取对 filename 的引用?

最佳答案

OptionParser 专门处理选项 - 即以破折号开头的内容。解析后,剩余的参数留在 ARGV 中。您可以在那里检查您的文件名,如果丢失则报错退出。

对他们的 minimal example 稍作修改,

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
p "Where is my hat?!" if ARGV.length == 0

你明白了:

$ ruby parse.rb
{}
[]
"Where is my hat?!"

$ ruby parse.rb hat
{}
["hat"]

$ ruby parse.rb -v hat
{:verbose=>true}
["hat"]

关于 ruby 选项解析器 : how to handle arguments without a prefix (like a required filename),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32012800/

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