【问题标题】:How do I check that all the elements of an array satisfy a condition?如何检查数组的所有元素是否满足条件?
【发布时间】:2017-06-20 05:29:53
【问题描述】:

我使用的是 Ruby 2.4。如何检查我的数组的所有元素是否满足条件?我有

cond = true
arr.each do |e|
  if e.nil? || e.to_i < 5
    cond = false
    break
   end
end

但我觉得有一种更有效的方法来做到这一点。

【问题讨论】:

    标签: arrays ruby conditional-statements


    【解决方案1】:

    如何检查数组的所有元素是否满足条件?

    使用all?。例如:

    [1, 2, 3].all? { |i| i < 4 } #=> true
    

    【讨论】:

    • 看起来i 可以为nil。
    【解决方案2】:

    你可以改写成

    arr.all? { |e| e.to_i >= 5 }
    

    【讨论】:

    • 是的,很棒:)
    • 问题是,“如何检查我的数组的所有元素是否满足条件?”。您的答案是针对 OP 给出的具体示例的解决方案,而不是通用解决方案,因此它的用处有限。例如,假设您只知道arr 是任何对象的数组obj,其中可能包括nil,并且给您一个以m 方法形式的条件,它采用@ 987654326@ 作为参数并返回 truefalse。然后你可以写arr.all? { |obj| !obj.nil? &amp;&amp; m(obj) }。此评论也适用于其他答案。
    猜你喜欢
    • 2013-03-06
    • 1970-01-01
    • 2012-10-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    相关资源
    最近更新 更多