sirve - ¿Cuál es la forma más rápida en Ruby para obtener el primer elemento enumerable para el cual un bloque devuelve verdadero?
programar en ruby (3)
¿Cuál es la forma más rápida en Ruby para obtener el primer elemento enumerable para el cual un bloque devuelve verdadero?
Por ejemplo:
arr = [12, 88, 107, 500]
arr.select {|num| num > 100 }.first # => 107
Me gustaría hacer esto sin ejecutar toda la matriz, ya que select
, ya que solo necesito la primera coincidencia.
Sé que podría hacer each
y romper con el éxito, pero pensé que había un método nativo para hacerlo; Simplemente no lo he encontrado en la documentación.
Varias clases básicas de ruby, incluyendo Array
y Hash
incluyen el módulo Enumerable
que proporciona muchos métodos útiles para trabajar con estas enumeraciones.
Este módulo proporciona los métodos de find
o detect
que hacen exactamente lo que desea lograr:
arr = [12, 88, 107, 500]
arr.find { |num| num > 100 } # => 107
Ambos nombres de métodos son sinónimos entre sí y hacen exactamente lo mismo.
arr.find{|el| el>100} #107 (or detect; it''s in the Enumerable module.)
arr[arr.index {|num| num > 100 }] #=> 107