Eu tenho uma matriz Ruby contendo alguns valores de string. Eu preciso:
- Encontre todos os elementos que correspondem a algum predicado
- Execute os elementos correspondentes por meio de uma transformação
- Retorna os resultados como uma matriz
No momento, minha solução é assim:
def example
matchingLines = @lines.select{ |line| ... }
results = matchingLines.map{ |line| ... }
return results.uniq.sort
end
Existe um método Array ou Enumerable que combina selecionar e mapear em uma única instrução lógica?
Enumerable#grep
método faz exatamente o que foi pedido e está em Ruby há mais de dez anos. Leva um argumento de predicado e um bloco de transformação. @hirolau dá a única resposta correta para esta pergunta.
filter_map
exatamente para esse propósito. Mais informações aqui .