Menu
Coddy logo textTech

Map e Collect

Parte da seção Fundamentos do Journey de Ruby da Coddy — lição 68 de 88.

Embora o each seja ótimo para realizar ações em elementos, às vezes você deseja transformar um array em um novo. O método map (também chamado de collect) faz exatamente isso: ele cria um novo array contendo os resultados da execução do seu bloco em cada elemento.

numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }

puts doubled  # Saídas: 2, 4, 6, 8

A principal diferença em relação ao each é que o map retorna um novo array com os valores transformados. O array original permanece inalterado.

Aqui está um exemplo prático que converte temperaturas de Celsius para Fahrenheit:

celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }

puts fahrenheit  # Saídas: 32, 68, 212

Você também pode usar map com strings:

names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }

puts capitalized  # Saída: Alice, Bob

Os métodos map e collect são idênticos. O Ruby fornece ambos os nomes, para que você possa usar aquele que soar melhor em seu código. A maioria dos desenvolvedores Ruby prefere map porque é mais curto.

challenge icon

Desafio

Fácil

Leia uma única linha de entrada contendo números inteiros separados por vírgulas (ex: 2,4,6,8,10).

Divida a entrada em um array de inteiros e, em seguida, use o método map para criar um novo array onde cada número é elevado ao quadrado (multiplicado por si mesmo).

Imprima cada elemento do novo array de quadrados em sua própria linha.

Por exemplo, se a entrada for 2,4,6,8,10, a saída deve ser:

4
16
36
64
100

Se a entrada for 1,2,3,4,5, a saída deve ser:

1
4
9
16
25

Se a entrada for 3,7,11, a saída deve ser:

9
49
121

Se a entrada for 10, a saída deve ser:

100

Folha de consulta

O método map (também chamado de collect) transforma um array em um novo ao aplicar um bloco a cada elemento. Ele retorna um novo array com os valores transformados, deixando o array original inalterado.

numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled  # Saídas: 2, 4, 6, 8

Exemplo com conversão de temperatura:

celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit  # Saídas: 32, 68, 212

Exemplo com strings:

names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized  # Saídas: Alice, Bob

map e collect são métodos idênticos. A maioria dos desenvolvedores Ruby prefere map.

Experimente você mesmo

# Leia a entrada separada por vírgulas
input = gets.chomp

# TODO: Escreva seu código abaixo
# 1. Divida a string de entrada em um array de inteiros
# 2. Use o método map para elevar cada número ao quadrado
# 3. Imprima cada número ao quadrado em sua própria linha
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos