Ruby:如何检查数组中的所有元素是否为负整数

时间:2016-11-09 18:09:23

标签: ruby

我有数组a = [-1,-2,-3,-4]b = [-1,-2,-3,4]

如何确保a仅包含负整数? 我可以检查一些元素是否为a.select(&:negative?) == trueb.select(&:negative?) == true

但我需要知道b.select(&:negative?).only == true

2 个答案:

答案 0 :(得分:14)

您可以在此处使用Enumerable#all?

[-1,-2,-3,-4].all?(&:negative?)
#=> true
是的,我认为你对这里发生的事情感到困惑:

a.select(&:negative?) == true

这不是检查所有元素是否为负数。事实上,将结果的负数数组与false

进行比较
[-1,-2,-3,-4] == false

当然,它始终会返回false,因为只有false等于false

答案 1 :(得分:6)

您可以简单地考虑最大值:

arr = [-1,-2,-3,-4]
arr.empty? ? false : arr.max < 0
  #=> true

如果数组只包含整数。如果数组可能包含非整数的元素,则必须首先确认只存在整数。

arr = [-1,-2,-3,-4, "cat", { a:1 }]
return false unless arr.all? { |e| e.is_a?(Fixnum) }
  #=> false returned