Возвращает true, только если все значения оцениваются в true в Ruby

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

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

например, если бы у меня был массив целых чисел, и я хотел ответить на вопрос "все ли целые числа Нечетные?"

Я всегда могу перебирать каждое значение, проверять, верно ли это, а затем возвращать false, когда один из них возвращает false, но есть ли лучший способ сделать это?

1 ответов


можно использовать all? функция из перечисляемого mix-in.

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

или, как указано в комментариях, вы также можете использовать odd? Если вы ищете конкретно нечетные значения.

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