objects - ruby select
Primer elemento de una matriz con condición. (2)
En cuanto a mí, encontrar sonidos confusos. Como estoy esperando recibir más de un objeto para tal solicitud.
Prefiero usar detect
para obtener una distinta.
Y select
para encontrarlos todos.
Aquí lo que Ruby docs cuenta sobre ellos:
detect(ifnone = nil) {| obj | block } → obj or nil click to toggle source
find(ifnone = nil) {| obj | block } → obj or nil
detect(ifnone = nil) → an_enumerator
find(ifnone = nil) → an_enumerator
Pasa cada entrada en la enumeración para bloquear. Devuelve el primer bloque para el que no es falso. Si ningún objeto coincide, llama a ifnone y devuelve su resultado cuando se especifica, o devuelve nil en caso contrario.
find_all {| obj | block } → array click to toggle source
select {| obj | block } → array
find_all → an_enumerator
select → an_enumerator
Devuelve una matriz que contiene todos los elementos de enumeración para los cuales el bloque no es falso
¿Hay una manera más corta de encontrar el primer elemento en una matriz que cumpla con algunas condiciones?
my_array[ my_array.index {|x| x.some_test} ]
Prueba esto:
my_array.find{|x| x.some_test }
O aquí hay un atajo (gracias a @LarsHaugseth por recordárselo)
my_array.find(&:some_test)