数组或散列的元素之一是否为nil

时间:2012-11-15 01:01:36

标签: ruby arrays

是否有任何方法可以告诉数组或散列的其中一个元素是否为nil?

3 个答案:

答案 0 :(得分:5)

对于数组

array = [1, 2, 'a']
array.any?(&:nil?)
#=> false

对于哈希,我猜你在谈论零值。

hash = {:a => 1, :b => 2, :c => nil}
hash.value?(nil)
#=> true

答案 1 :(得分:1)

您可以使用any?方法:http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-any-3F

例如:arr.any? { |x| x.nil? }

答案 2 :(得分:1)

正如oldgod和strmstn指出你应该使用any,并且在块内部条件中你可以验证一个元素是nil还是它的类是Hash

[1,2,nil].any? {|x| x.class == Hash or x.nil? } # => true

[1,2,{}].any?  {|x| x.class == Hash or x.nil? } # => true