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

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

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

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

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

Ответ 1

Вы можете использовать функцию all? из перемешивания Enumerable.

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?)