有没有更简单的方法来检查变量是否为“nil”或空数组?

时间:2017-11-09 22:45:45

标签: arrays ruby

我有一个变量:

my_arr

可以是nil或数组。我想验证它是否包含至少一个元素。它可以通过以下方式实现:

my_arr && !my_arr.empty?

但我想写得更简单。我试过了:

!my_arr.empty?

但如果my_arrnil则失败。有一个简单的方法吗?

2 个答案:

答案 0 :(得分:2)

这样可行:

my_arr.to_a.empty?

由于:

nil.to_a #=> []

另一方面,数组实例只返回自身。

同样的"技巧"适用于其他课程:

nil.to_h.empty? #=> true
nil.to_s.empty? #=> true
nil.to_i.zero?  #=> true

答案 1 :(得分:1)

如果您的数组可能包含any?nil值,您可以使用安全访问运算符和false方法:

my_arr&.any?

如果可以的话,你可以使用any?(&:to_s),它看起来既不是原生也不是原始解决方案。

一般来说,最好确保它总​​是一个数组,或者至少是具有相同鸭子类型支持的东西。