Map
Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 23 de 56.
map recebe um closure e o aplica a cada elemento, retornando um novo array com os resultados. O novo array tem o mesmo comprimento que o original.
let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 }
print(doubled) // [2, 4, 6, 8]$0 é um atalho para o primeiro parâmetro da closure. A forma mais longa especifica o nome do parâmetro e o tipo de retorno:
let doubled = nums.map { (n: Int) -> Int in
return n * 2
}map também pode alterar o tipo do elemento. Mapear um [Int] através de uma closure que retorna String resulta em um [String]:
let labels = nums.map { "#\($0)" }
print(labels) // ["#1", "#2", "#3", "#4"]Desafio
FácilLeia uma única linha de entrada: uma lista de números inteiros separados por vírgula (temperaturas em Fahrenheit).
Converta cada uma para Celsius usando a fórmula C = (F - 32) * 5 / 9 em aritmética de inteiros (truncar em direção a zero, sem decimais). Imprima, em linhas separadas:
- As temperaturas em Celsius, unidas com
, - Um rótulo por temperatura com o prefixo
F=<f> C=<c>, unidos com;
Use map para ambas as linhas.
Para a entrada 32,212,98,0, a saída é:
0,100,36,-17
F=32 C=0;F=212 C=100;F=98 C=36;F=0 C=-17Folha de consulta
map aplica um closure a cada elemento e retorna um novo array com o mesmo comprimento:
let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 } // [2, 4, 6, 8]$0 é um atalho para o primeiro parâmetro do closure. Forma explícita:
let doubled = nums.map { (n: Int) -> Int in
return n * 2
}map pode alterar o tipo do elemento (ex: [Int] → [String]):
let labels = nums.map { "#\($0)" } // ["#1", "#2", "#3", "#4"]Experimente você mesmo
let f = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: linha 1 = celsius unidos com ","
// TODO: linha 2 = rótulos "F=<f> C=<c>" unidos com ";"
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Strings a Fundo
Contagem e ÍndicesCase e TrimBusca em StringsDivisão e JunçãoSubstituindo SubstringsRecapitulação - Verificação de Nome de Usuário4Conjuntos
Criando ConjuntosUnião e InterseçãoSubtração e Diferença SimétricaSubconjunto e SuperconjuntoRecapitulação - Filtro de Tags7Projeto - Monitor de Hábitos
Visão Geral do ProjetoMarcar como Concluído10Projeto - Mecanismo de Quiz
Visão Geral do ProjetoFazer Perguntas2Intervalos e Strides
Fechado vs Meio-AbertoStrideMétodos de IntervaloIntervalos no SwitchRecapitulação - Grade de Calendário5Funções de Ordem Superior Parte 1
MapFilterReduceEncadeando map, filter, reduceRecapitulação - Estatísticas de Palavras