Declarando Dicionários
Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 12 de 56.
Um dicionário é uma coleção não ordenada de pares chave/valor. Tanto o tipo da chave quanto o tipo do valor são fixos quando você o cria.
var prices: [String: Int] = [
"apple": 1,
"bread": 3,
"milk": 4
]
print(prices.count) // 3
print(prices.isEmpty) // falseA anotação de tipo [String: Int] lê-se como "as chaves são String, os valores são Int". O Swift geralmente consegue inferi-lo a partir do literal, mas escrevê-lo torna os inicializadores vazios inequívocos:
var counts: [String: Int] = [:]
// vs. um array vazio, que também precisaria de um tipoLer uma chave que existe retorna o valor. Ler uma chave que não existe retorna nil, a próxima lição cobre essa parte.
Desafio
FácilLeia três linhas de entrada: um nome, um país e uma idade inteira. Construa um único dicionário chamado person com chaves do tipo String e os valores que você leu (a idade permanece como um Int, você precisará de um tipo de valor heterogêneo, veja a dica).
Imprima três linhas:
- O número de entradas no dicionário
name=<value>usando acesso por subscritocountry=<value>usando acesso por subscrito
Use a forma imprimível: ao ler o valor do dicionário como um Any, faça o force-unwrap antes de imprimir.
Para a entrada Alice / UK / 30, a saída é:
3
name=Alice
country=UKFolha de consulta
Um dicionário armazena pares chave/valor com tipos de chave e valor fixos:
var prices: [String: Int] = [
"apple": 1,
"bread": 3,
"milk": 4
]
print(prices.count) // 3
print(prices.isEmpty) // falseCrie um dicionário vazio com anotação de tipo explícita:
var counts: [String: Int] = [:]Use [String: Any] para tipos de valores heterogêneos (tipos mistos):
var person: [String: Any] = [
"name": "Alice",
"age": 30
]Experimente você mesmo
let name = readLine()!
let country = readLine()!
let age = Int(readLine()!)!
// TODO: construa um [String: Any] chamado person, imprima count, name, country
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 Palavras3Dicionários
Declarando DicionáriosBusca OpcionalAtualizando DicionáriosIterando DicionáriosAgrupando ValoresRecapitulação - Inventário6Funções de Ordem Superior Parte 2
compactMapflatMapsorted(by:)Construindo PipelinesRecapitulação - Leaderboard