Skip to content

day_002

Giorgio Braz edited this page Jan 19, 2022 · 1 revision

Day 2 – arrays, dictionaries, sets, and enums

// **************************** Arrays ****************************
let john = "John Lennon"
let paul = "Paul McCartney"
let george = "George Harrison"
let ringo = "Ringo Starr"

let beatles = [john, paul, george, ringo]
beatles[0]

// Com Type annotations
var cities: [String] = ["London", "Paris", "New York"]

// ***************************** Sets *****************************
/*
 1. Não são ordenáveis
 2. Não contém valores duplicados
 3. Não contém um índice
 */
let colors = Set(["red", "green", "blue"])
let colors2 = Set(["red", "green", "blue", "red", "blue"]) // porém, não retorna um erro
// Para buscar dados de forma mais rápida se sem tantas iterações, como se uma palavra existe em um dicionário, os sets são extremamente recomendados.

// ***************************** Tuplas ***************************
/*
 1. Armazenar vários valores em um único
 2. São imutáveis (sem add ou remove) e seus tipos também.
 3. Acessar valores pode ser feito por número ou nome
 */
var name = (first: "Taylor", last: "Swift") // Também pode ser constante (LET)
name.0
name.first = "Young"
//print(name.0)

// NOTA: É possível alterar o valor, mas não seu tipo. Isso resultará num erro.

// Arrays vs sets vs tuples, como saber qual escolher?
//https://www.hackingwithswift.com/quick-start/understanding-swift/when-should-you-use-an-array-a-set-or-a-tuple-in-swift

// ************************** Dicionários *************************
let heights = [
    "Taylor Swift": 1.78,
    "Ed Sheeran": 1.73
]

// Valores padrão do dicionário
var favoriteIceCreamn = ["Charlotte", default: "Unknown"]

// Outro exemplo válido
let books = ["Austen": "Pride and Prejudice"]
let dickens = books["Dickens", default: "Unknown"]

// Ou
let albums = ["Prince": "Purple Rain"]
var beatles2 = albums["Beatles"]

// ******************** Criando coleções vazias ********************
// https://www.hackingwithswift.com/sixty/2/7/creating-empty-collections

// ***************************** Enums ******************************
// Permite nos escolher um nome apropriado/adequado/legal para um valor.

let result = "failure"
let result2 = "failed"
let result3 = "fail"

// Indicam sucesso ou falha, por exemplo:
enum Result {
    case success
    case failure
}
// Exemplo de uso para esse caso:
let result4 = Result.failure

// Outro caso de uso interessante:
// Direction -> north, south, east, and west
// Usamos assim -> Direction.north

// -----------------------------------------------------------------
// Seus valores associados
enum Activity {
    case bored
    case running(destination: String)
    case talking(topic: String)
    case singing(volume: Int)
}

let talking = Activity.talking(topic: "football")

// Outro exemplo
enum Weather {
    case sunny
    case windy(speed: Int)
    case rainy(chance: Int, amount: Int)
}

// Valores brutos para Enum
enum Planet: Int {
    case mercury = 1 // Ao remover a atribuição, mercury começará em 0.
    case venus
    case earth
    case mars
}