Tengo una matriz de Ruby que contiene algunos valores de cadena. Necesito:
- Encuentra todos los elementos que coinciden con algún predicado
- Ejecute los elementos coincidentes a través de una transformación
- Devuelve los resultados como una matriz
En este momento, mi solución se ve así:
def example
matchingLines = @lines.select{ |line| ... }
results = matchingLines.map{ |line| ... }
return results.uniq.sort
end
¿Existe un método Array o Enumerable que combine select y map en una sola declaración lógica?
Enumerable#grep
método hace exactamente lo que se le pidió y ha estado en Ruby durante más de diez años. Requiere un argumento predicado y un bloque de transformación. @hirolau da la única respuesta correcta a esta pregunta.
filter_map
con este propósito exacto. Más info aquí .