2017-02-02 3 views
0

Я использую Ruby 2.4. Как проверить, удовлетворяют ли все элементы моего массива условием? У меня естьКак проверить, что все элементы массива удовлетворяют условию?

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

но я чувствую, что есть более эффективный способ сделать это.

ответ

3

Вы можете переписать, что, как

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

В качестве бонуса он работает с 'nil'. –

+1

Да, это здорово :) – Ursus

+1

Вопрос в том, «Как проверить, удовлетворяют ли все элементы моего массива условием?». Ваш ответ - это решение конкретного примера, данное OP, а не общее решение, поэтому оно имеет ограниченную полезность. Предположим, например, что все, что вы знаете, это то, что 'arr' представляет собой массив любых объектов, obj', которые могут включать' nil', и вам дается условие в виде метода 'm', который принимает' obj' как аргумент и возвращает 'true' или' false'. Тогда вы могли бы написать 'arr.all? {| obj | ! Obj.nil? && m (obj)} '. Этот комментарий относится и к другим ответам. –

0

Как проверить, удовлетворяют ли все элементы моего массива условием?

all?. Например:

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

Похоже, 'i' может быть равна нулю. –

Смежные вопросы