Menu
Coddy logo textTech

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)          // false

A 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 tipo

Ler uma chave que existe retorna o valor. Ler uma chave que não existe retorna nil, a próxima lição cobre essa parte.

challenge icon

Desafio

Fácil

Leia 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:

  1. O número de entradas no dicionário
  2. name=<value> usando acesso por subscrito
  3. country=<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=UK

Folha 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) // false

Crie 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
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 Lógica e Fluxo