2012-05-20 10 views
11

¿Cuál es una forma rápida de verificar si todos los elementos de un enumerable satisfacen una determinada condición? Creo que lógicamente sería como: "¿Son todos los números enteros impares"Devuelve verdadero solo si todos los valores se evalúan como verdadero en Ruby

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

Por ejemplo, si tuviera una matriz de enteros, y quería responder a la pregunta

Siempre puedo repetir sobre cada valor, verificar si es verdadero y luego devolver falso cuando uno de ellos devuelve falso, pero ¿hay una mejor manera de hacerlo?

Respuesta

17

Puede usar la función all? de la combinación Enumerable.

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

O, como se ha señalado en los comentarios, también se podría utilizar odd? si usted está buscando de modo específico para valores impares.

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

En realidad, ¿podría simplemente llamar a 'odd?' En el número en lugar de usar módulo, lo que significa que podría hacer simplemente 'elements.all? (&: Odd?)'. –

Cuestiones relacionadas