我想避免迭代nil数组.
我的坏解决方案:
if nil!=myArr
myArr.each { |item|
p item;
}
end
Run Code Online (Sandbox Code Playgroud)
Mic*_*ski 23
对于简单的单行程,您也可以使用 unless myArr.nil?
myArr.each { |item| p item } unless myArr.nil?
Run Code Online (Sandbox Code Playgroud)
如果您对nil返回感到满意而不是完全避免执行,则可以使用" 安全"导航操作符&..请注意,这略有不同.虽然unless版本将完全跳过执行,但&.将执行但返回nil.
myArr&.each { |item| p item }
# returns nil
Run Code Online (Sandbox Code Playgroud)
xda*_*azz 12
在Ruby中,只有nil和false被认为是假的.
if myArr
myArr.each { |item|
p item
}
end
Run Code Online (Sandbox Code Playgroud)
Cer*_*eal 10
您可以将数组值包装在中Array().
Array(myArr).each { |item| p item }
Run Code Online (Sandbox Code Playgroud)
根据文档,这样做:
也可以使用Kernel提供的Array()方法创建一个数组,该方法尝试调用to_ary,然后调用to_a的参数.
基本上,这会将nil值转换为[].哪个既不会迭代,也不会抛出错误.公平的警告,它会对任何价值做同样的事情.Array("string")将创造["string"].
| 归档时间: |
|
| 查看次数: |
13798 次 |
| 最近记录: |