我想编写一行代码来检查数组是否包含除0以外的任何内容。基本上这样:
if array.include?( ! 0) == false
写不起作用:
if not array.include(0)
因为我不想说“如果数组不包含零”。我试图说“如果数组包含任何不为零的东西。”
有什么建议吗?
答案 0 :(得分:4)
您正在检查是否"并非所有值都为零。"这直接转化为ruby:
!array.all?(&:zero?)
示例:
array = []
!array.all?(&:zero?)
# => false
array = [0]
!array.all?(&:zero?)
# => false
array = [0,1]
!array.all?(&:zero?)
# => true
答案 1 :(得分:3)
最简单的方法可能是#any?
array.any? {|e| e != 0 }
如果数组中的任何值不为0,那么'将返回true。
答案 2 :(得分:1)
答案 3 :(得分:0)
我建议如下。
如果你想知道数组是否包含整数零以外的任何东西:
def any_non_integer_zero?(a)
a.any? { |e| !e.is_a?(Integer) || e != 0 }
end
any_non_integer_zero? [0, 0] #=> false
any_non_integer_zero? [0.0, 0] #=> true
any_non_integer_zero? ['a', 0.0, 0] #=> true
any_non_integer_zero? [0.1, 0.0, 0] #=> true
any_non_integer_zero? [[0,0], 0.0, 0] #=> true
如果您想知道数组是否包含数字零以外的任何内容:
def any_non_zero?(a)
a.any? { |e| !e.is_a?(Numeric) || e != 0.0 }
end
any_non_zero? [0, 0] #=> false
any_non_zero? [0.0, 0] #=> false
any_non_zero? ['a', 0.0, 0] #=> true
any_non_zero? [0.1, 0.0, 0] #=> true
any_non_zero? [[0,0], 0.0, 0] #=> true