Итерация массива и проверка элементов в Ruby

Каков наилучший способ перебрать массив, проверить каждый элемент, а затем вернуть, допустим ли этот массив в Ruby? Что-то типа:

def arr_valid?(arr)
  result = true
  arr.each do |element|
    result = false if
       # validate element with some requirments
    end
  end
  result
end

Я думаю, что для этого подхода выше много кода.


person odiszapc    schedule 24.06.2012    source источник


Ответы (1)


Используйте all?, который вернет true только если блок true для всех элементов.

def arr_valid?(arr)
  arr.all? do |element|
    # validate element with some requirments
  end
end
person Andrew Marshall    schedule 24.06.2012
comment
Если вы обнаружите, что используете not или ! для инвертирования смысла блока, используйте none? вместо all?. - person Alex D; 25.06.2012