Ruby: Entendendo Each, Select, Map e Collect!

Ruby: Entendendo Each, Select, Map e Collect!
Photo by Karen Vardazaryan / Unsplash

Oi, galera! Hoje vamos falar sobre algumas ferramentas superúteis do Ruby que podem parecer complicadas, mas são mais fáceis do que você pensa. Vou explicar quando usar each, select, map e collect, e vou mostrar com exemplos práticos. Bora lá?

Each: O Passeio pelo Parque

Usar each é como dar um passeio pelo parque e cumprimentar cada pessoa que você encontra. Ele simplesmente passa por cada elemento de uma lista, faz alguma coisa com ele, mas não muda a lista original. Veja só:

[1,2,3].each { |x| puts x + 1 }
# Saída:
# 2
# 3
# 4

Select: O Filtro dos Sonhos

Agora, select é como ter um filtro mágico que só deixa passar o que você quer. Ele cria uma nova lista só com os itens que passam no seu teste. Tipo isso:

a = [1,2,3,4,5]
a = a.select { |x| x > 2 }
puts a.inspect
# Saída: [3, 4, 5]

Map e Collect: Os Transformadores

map e collect são como transformers: eles pegam sua lista e transformam em algo novo. Eles são praticamente gêmeos, fazem a mesma coisa. Eles pegam cada item, fazem alguma mágica com ele e te dão uma lista nova toda transformada:

a = [1,2,3,4,5,6]
a = a.map { |x| x + 1 }
puts a.inspect
# Saída: [2, 3, 4, 5, 6, 7]

E o legal é que com map! ou collect!, você pode mudar a lista original sem precisar criar uma nova:

a = [1,2,3,4,5,6]
a.map! { |x| x + 1 }
puts a.inspect
# Saída: [2, 3, 4, 5, 6, 7]

Bônus: Each_with_index

E tem mais! Se você quiser não só o elemento, mas também saber a posição dele na lista, each_with_index é seu novo melhor amigo. Ele é tipo um guia turístico que te mostra o lugar e ainda te conta a história:

a = ['maçã', 'banana', 'cereja']
a.each_with_index { |item, index| puts "#{index}: #{item}" }
# Saída:
# 0: maçã
# 1: banana
# 2: cereja

E aí, ficou mais claro? Com essas ferramentas, você pode fazer seu código Ruby brilhar e ainda entender o que está acontecendo. Agora é só experimentar e ver como elas podem facilitar sua vida de programador!

Respeite os direitos autorais. Problemas ou funcionalidades? Envie um e-mail para [email protected]. Quer usar o Link Reader em todas as abas? Pegue aqui.

Read more