Ho un array Ruby contenente alcuni valori di stringa. Ho bisogno di:
- Trova tutti gli elementi che corrispondono a un predicato
- Esegui gli elementi corrispondenti attraverso una trasformazione
- Restituisce i risultati come un array
In questo momento la mia soluzione è simile a questa:
def example
matchingLines = @lines.select{ |line| ... }
results = matchingLines.map{ |line| ... }
return results.uniq.sort
end
Esiste un metodo Array o Enumerable che combina selezione e mappatura in un'unica istruzione logica?
Enumerable#grep
metodo fa esattamente ciò che è stato richiesto ed è presente in Ruby da oltre dieci anni. Richiede un argomento predicato e un blocco di trasformazione. @hirolau dà l'unica risposta corretta a questa domanda.
filter_map
per questo scopo esatto. Maggiori info qui .