这是我的代码:
region = ARGV[0]
instance_name = ARGV[1]
Run Code Online (Sandbox Code Playgroud)
这样它的作用:
raise RuntimeError, 'empty argument' if ARGV[0].nil?
raise RuntimeError, 'empty argument' if ARGV[1].nil?
Run Code Online (Sandbox Code Playgroud)
这样它不起作用:
我尝试了所有这些
ARGV.each do |a|
raise RuntimeError, 'empty argument' if "#{a}".nil?
raise RuntimeError, 'empty argument' if a.nil?
raise RuntimeError, 'empty argument' if "#{a}".empty?
raise RuntimeError, 'empty argument' if a.empty?
end
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
谢谢.
raise RuntimeError, 'empty argument' if ARGV[0].nil?是因为尝试访问不存在的Ruby数组中的任何索引将返回nil.
ARGV[123213] #=> nil
Run Code Online (Sandbox Code Playgroud)
ARGV.each将尝试循环遍历内容,ARGV但如果ARGV为空,则块的内容将永远不会被执行,因此if实际上不会运行任何条件.
如果要检查是否提供了2个参数,可以检查长度ARGV.length == 2.
从技术上讲,可能是为其中一个参数传递了一个空字符串.例如,如果脚本是使用运行的
ruby myscript.rb ""
Run Code Online (Sandbox Code Playgroud)
所以你可以检查一下
if ARGV.length == 2 && ARGV.none?(&:empty?)
# 2 arguments provided...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1830 次 |
| 最近记录: |