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

Kir*_*lov 3 ruby

我有阵列a = [-1,-2,-3,-4]b = [-1,-2,-3,4]

我怎样才能确保a只包含负整数?我可以检查一些元素是负a.select(&:negative?) == trueb.select(&:negative?) == true

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

And*_*eko 14

你可以在这里使用Enumerable#all?:

[-1,-2,-3,-4].all?(&:negative?)
#=> true
Run Code Online (Sandbox Code Playgroud)

顺便说一下,我觉得你对这里发生的事情感到困惑:

a.select(&:negative?) == true
Run Code Online (Sandbox Code Playgroud)

这不是检查所有元素是否为负数.事实上,将得到的负数数组与false以下数据进行比较:

[-1,-2,-3,-4] == false
Run Code Online (Sandbox Code Playgroud)

当然,它总会回归false,因为只有false等于false.

  • `.any?`当然也是短路.它读起来更好.你知道,揭示意图,这一切. (2认同)

Car*_*and 6

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

arr = [-1,-2,-3,-4]
arr.empty? ? false : arr.max < 0
  #=> true
Run Code Online (Sandbox Code Playgroud)

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

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