【问题标题】:Return true only if all values evaluate to true in Ruby仅当 Ruby 中的所有值都为 true 时才返回 true
【发布时间】:2016-06-03 04:32:05
【问题描述】:

验证可枚举的所有元素是否满足特定条件的快速方法是什么?我想从逻辑上讲是这样的:

elements = [e1, e2, e3, ...]
return (condition on e1) && (condition on e2) && (condition on e3) && ...

例如,如果我有一个整数数组,并且我想回答“所有整数都是奇数吗?”的问题

我总是可以遍历每个值,检查它是否为真,然后当其中一个返回假时返回假,但有更好的方法吗?

【问题讨论】:

    标签: ruby


    【解决方案1】:

    您可以使用 Enumerable mix-in 中的 all? 函数。

    elements = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
    return elements.all? { |elem| elem % 2 != 0 }
    

    或者,正如 cmets 中所指出的,如果您专门寻找奇数值,也可以使用 odd?

    elements = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
    return elements.all?(&:odd?)
    

    【讨论】:

    • 你实际上可以直接在号码上调用odd?而不是使用模数,这意味着你可以简单地使用elements.all?(&:odd?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    相关资源
    最近更新 更多