Ruby 带有感叹号的示例
Ruby example with exclamation mark
我正在 ruby 中编写具有不同选项的脚本,但我无法理解 OptionParser 如何帮助我。
特别是,文档中有一个示例:https://docs.ruby-lang.org/en/2.1.0/OptionParser.html
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
我可以理解 "end.parse" 行上的感叹号(但我希望后面有一个参数),但我发现以下两行令人困惑, p
尚未声明,并且我不明白它是否是示例源代码的一部分。
以及如何使用“-v”选项?我只是检查 options[:v] 是 nil
还是 true
?
最后,其他选项会怎样? OptionParser 是否只解析开关?如果我在“-v”之后有其他参数怎么办?喜欢 myscript -v duck ketchup banana
?
回答您的问题:
I can understand the exclamation mark on the "end.parse" line (but I expected a parameter after that)
The documentation 表示 parse!
接受一个可选的 argv
参数。如果未提供,则默认为 default_argv
,我想这是包含在命令行中传递给此脚本的参数的字符串。
p hasn't been declared, and I can't understand if it's part of the example source
p
是 defined in Kernel
,因此它(几乎)总是在 Ruby 中可用。 p obj
等同于 puts obj.inspect
.
在此上下文中,p
只是用来说明在解析参数后,options
散列包含您在OptionParser块中定义的所有flags/options。
And how do I use the '-v' option? Do I simply check if options[:v] is nil or true?
是的,但实际上是 options[:verbose]
。
Last thing, what happens to the other options? Does the OptionParser only parse switches? What if I had other parameters after the '-v'? Like myscript -v duck ketchup banana
?
您必须多次调用 opts.on
才能匹配您感兴趣的所有其他 switches/arguments。请查看文档 here 以了解如何执行此操作的说明。
我正在 ruby 中编写具有不同选项的脚本,但我无法理解 OptionParser 如何帮助我。
特别是,文档中有一个示例:https://docs.ruby-lang.org/en/2.1.0/OptionParser.html
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
我可以理解 "end.parse" 行上的感叹号(但我希望后面有一个参数),但我发现以下两行令人困惑, p
尚未声明,并且我不明白它是否是示例源代码的一部分。
以及如何使用“-v”选项?我只是检查 options[:v] 是 nil
还是 true
?
最后,其他选项会怎样? OptionParser 是否只解析开关?如果我在“-v”之后有其他参数怎么办?喜欢 myscript -v duck ketchup banana
?
回答您的问题:
I can understand the exclamation mark on the "end.parse" line (but I expected a parameter after that)
The documentation 表示 parse!
接受一个可选的 argv
参数。如果未提供,则默认为 default_argv
,我想这是包含在命令行中传递给此脚本的参数的字符串。
p hasn't been declared, and I can't understand if it's part of the example source
p
是 defined in Kernel
,因此它(几乎)总是在 Ruby 中可用。 p obj
等同于 puts obj.inspect
.
在此上下文中,p
只是用来说明在解析参数后,options
散列包含您在OptionParser块中定义的所有flags/options。
And how do I use the '-v' option? Do I simply check if options[:v] is nil or true?
是的,但实际上是 options[:verbose]
。
Last thing, what happens to the other options? Does the OptionParser only parse switches? What if I had other parameters after the '-v'? Like
myscript -v duck ketchup banana
?
您必须多次调用 opts.on
才能匹配您感兴趣的所有其他 switches/arguments。请查看文档 here 以了解如何执行此操作的说明。