0Pricing
Swift Academy · Aula

Coleções

Coleções

Coleções é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 1 de 1. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 1 aulas no total.

Introdução

Olá,

Nesta lição, aprenderemos sobre os tipos de coleção no Swift, que constituem um dos tópicos mais importantes.

Então, vamos começar.

Há 3 tipos de coleção no Swift.

Matriz → Tipos de coleção sequenciais.

Conjunto → Tipos de coleção não ordenados e exclusivos.

Dicionário → Tipos de coleção não ordenados e organizados em pares de chave e valor.

Mutável — imutável

O fato de nossos tipos de coleção serem imutáveis ou mutáveis é determinado pela definição que fazemos.

Se o definirmos com uma instrução let, ele será imutável; se o definirmos com var, será mutável.

Se o valor que definimos não mudar posteriormente, usar let oferecerá uma vantagem de desempenho, permitindo que o compilador execute o código de forma mais otimizada.

Matriz

Matriz

Matriz é o tipo de coleção usado para manter dados em sequência. A partir da versão 3 do Swift, todos os elementos de uma matriz não precisam ser do mesmo tipo.

A sintaxe de uma definição simples de matriz é apresentada no exemplo abaixo.

// Let's create an empty array.
var someInts = [Int]()
print("someInts is of type [Int] with \(someInts.count) items.")
// Prints "someInts is of type [Int] with 0 items."

Criar um vetor com valor padrão

Criar um vetor com valor padrão

Em alguns casos, podemos querer criar um vetor com um valor padrão e um tamanho específico. Para isso, precisamos passar dois argumentos ao construtor de vetores.

Esses argumentos especificam qual é o valor padrão e quantos elementos o vetor terá.

var threeDoubles = Array(repeating: 0.0, count: 3)
print(threeDoubles)
// threeDoubles is of type [Double], and equals [0.0, 0.0, 0.0]

var anotherThreeDoubles = Array(repeating: 2.5, count: 3)
// anotherThreeDoubles is of type [Double], and equals [2.5, 2.5, 2.5]
print(anotherThreeDoubles)

var sixDoubles = threeDoubles + anotherThreeDoubles
print(sixDoubles)
// sixDoubles is inferred as [Double], and equals [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]

Criando uma matriz usando um literal de matriz

Criando uma matriz usando um literal de matriz

No exemplo anterior, aprendemos a criar uma matriz vazia. Entretanto, em alguns casos, podemos querer criar uma matriz usando um literal de matriz.

Vamos aprender seu uso com o exemplo.

/*
We have defined a variable named catList, 
and with the [String] statement we specified 
that its type is an Array containing String elements.
*/
var catList: [String] = ["Garfield", "Tom"]
print(catList)
/*
It will understand that the array is an Array containing
String statements, since we assign a value that 
defines the variable. (Swift type inference)
*/
var shoppingList = ["Eggs", "Milk"]
print(shoppingList)

Acessando um valor da matriz

Acessando o valor da matriz

Quando queremos acessar um elemento em um determinado índice de uma sequência, basta chamá-lo usando a sintaxe a seguir.

myArray [index]

Vejamos o exemplo.

// We have defined an array with 3 elements of type Int.
var numbers:[Int] = [1, 5, 21]

// Arrays start from Index 0. For example, in order to reach the value 5, which is the 2nd element, we need to access the 1st index.
var a = numbers[1]
print( "Value of numbers at index 1 is \(a)" )

Adicionando novos elementos à matriz

Adicionando novos elementos à matriz

Podemos adicionar um novo item a uma matriz. 

No exemplo abaixo, é definida uma matriz chamada catList. Em seguida, um novo item é adicionado a essa matriz com o método append. 

// The Array named catList was defined with 1 initial element.
var catList = ["Tom"]


/*
We are adding a new item with a Garfield 
value using the append method.
*/
catList.append("Garfield")
// Our array will now have 2 elements.


/*
With the + = operator, we can do the 
work that the append method does.
*/
catList += ["Sylvester"]

Adicionando dados a um índice específico da matriz

Adicionando dados a um índice específico da matriz

O valor que adicionei com o método append no exemplo anterior será adicionado ao final da matriz. Entretanto, às vezes podemos querer adicioná-lo a um índice específico. Para isso, usaremos o método insert.

A sintaxe será semelhante a esta.

myArr.insert ("The data to add", at: index);

Vamos descobrir como fazer isso com um exemplo.

var catList = ["Tom"]

catList.insert("Garfield", at: 1)

print(catList)

Excluindo um elemento específico da matriz

Excluindo um elemento específico da matriz

O método remove é usado para excluir um elemento em um determinado índice de uma matriz.

var shoppingList = ["Apple", "Cherry", "Cheese"]

let shoppingListOne = shoppingList.remove(at: 0)
// the item that was at index 0 has just been removed
// the mapleSyrup constant is now equal to the removed "Maple Syrup" string

let shoppingListTwo = shoppingList.removeLast()
// the last item in the array has just been removed

print(shoppingListTwo)

Iteração de um vetor

Podemos iterar um vetor que temos usando um laço de iteração.

Vamos analisar o exemplo.

var shoppingList = ["Banana", "Orange", "Milk"]

for item in shoppingList {
    print(item)
}
// Six eggs
// Milk
// Flour
// Baking Powder
// Bananas

for (index, value) in shoppingList.enumerated() {
    print("Item \(index + 1): \(value)")
}
// Item 1: Six eggs
// Item 2: Milk
// Item 3: Flour
// Item 4: Baking Powder
// Item 5: Bananas

Conjuntos

Conjuntos

Usados para manter coleções do mesmo tipo juntas, sem ordenação.

Como podemos entender pelo nome, eles são conjuntos. E não pode haver dois elementos com o mesmo valor no conjunto.

Criando um conjunto vazio

Usamos o exemplo a seguir para criar um conjunto vazio.

var catSet = Set<Character>()

Criando conjuntos usando um literal de vetor

Criando conjuntos usando um literal de vetor

Um literal de vetor pode ser usado para criar um conjunto. Observe que, embora o valor atribuído aqui pareça um vetor, o tipo da variável é um conjunto de cadeias de caracteres.

var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]

Aviso

Com o uso de um literal de vetor, não é possível criar um conjunto sem definir um tipo. Isso pode interferir no vetor. Portanto, precisamos definir o tipo. 

Pelo menos, devemos usá-lo da seguinte forma.

var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]

Métodos de conjuntos

Métodos de conjuntos

Vamos analisar o exemplo.

var favoriteGenres = ["Funk"]

print("I have \(favoriteGenres.count) favorite music genres.")

if favoriteGenres.isEmpty {
    print("favoriteGenres is empty")
} else {
    print("I have particular music preferences.")
}

if favoriteGenres.contains("Funk") {
    print("Funk")
} 

Iterando o conjunto

Iterando o conjunto

O tipo de conjunto do Swift não tem ordenação. No entanto, o método sorted pode ser usado ao iterar sobre o valor do conjunto. Esse método transforma os elementos do conjunto em um vetor.

let favoriteGenres = ["Classical","Jazz", "Hip hop"]

for genre in favoriteGenres {
    print("\(genre)")
}
// Classical
// Jazz
// Hip hop

Dicionário

Dicionário

São tipos de coleção que armazenam valores como pares de chave e valor e não possuem ordenação.

Cada valor é armazenado com uma chave exclusiva. Ela representa o ID desse valor no dicionário. Ele não contém uma sequência como os vetores. Podemos pensar nele como um dicionário do mundo real.

Assim, a identidade de cada valor é mais importante do que sua posição.

O tipo dicionário pode ser definido pela forma abreviada [Chave: Valor]. O uso da forma abreviada é mais comum.

var namesOfIntegers = [Int: String]()
// namesOfIntegers is an empty [Int: String] dictionary

namesOfIntegers[16] = "sixteen"
// namesOfIntegers now contains 1 key-value pair
namesOfIntegers = [:]
// namesOfIntegers is once again an empty dictionary of type [Int: String]

Métodos de acesso a dicionários

Podemos descobrir quantos elementos um dicionário contém usando o método de contagem.

Além disso, podemos verificar se o dicionário está vazio usando o método isEmpty.

Vamos fazer alguns exemplos desses métodos.

var airports = ["LHR": "London", "IST": "Istanbul"]

print("The airports dictionary contains \(airports.count) items.")
// Prints "The airports dictionary contains 2 items."

if airports.isEmpty {
    print("The airports dictionary is empty.")
} else {
    print("The airports dictionary is not empty.")
}
// Prints "The airports dictionary is not empty."

airports["LHR"] = "London"
// the airports dictionary now contains 3 items

Subscrito

O processo de obter um valor usando um subscrito é o seguinte. O resultado retornado é opcional.

var airports = ["DUB":"Dublin"]

if let airportName = airports["DUB"] {
    print("The name of the airport is \(airportName).")
} else {
    print("That airport is not in the airports dictionary.")
}
// Prints "The name of the airport is Dublin Airport."



//Deletion
airports["APL"] = nil

if let removedValue = airports.removeValue(forKey: "DUB") {
    print("The removed airport's name is \(removedValue).")
} else {
    print("The airports dictionary does not contain a value for DUB.")
}
// Prints "The removed airport's name is Dublin Airport."

Atualizando um dicionário

Além de usar o subscrito acima, há um método para atualizar o dicionário.

A característica desse método é que, depois que o processo de atualização ocorre, ele retorna o valor anterior à atualização.

var airports = ["DUB": "Dublin"]

if let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB") {
    print("The old value for DUB was \(oldValue).")
}
// Prints "The old value for DUB was Dublin."

Exemplo de conversão de dicionário para vetor

Veja abaixo um exemplo de conversão de dicionário para vetor.


let airports = ["IST":"Istanbul Airport", "DUB":"Dublin Airport"]

let airportCodes = [String](airports.keys)
print(airportCodes)

let airportNames = [String](airports.values)
print(airportNames)

Parabéns

Parabéns 🎉

Nesta lição, aprendemos a usar coleções no Swift.

Até a próxima lição.

Coleções — ilustração 22

Perguntas Frequentes

A aula “Coleções” é grátis?

Sim — o texto completo de “Coleções” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 1 aulas no total.

O que vou aprender em “Coleções”?

Coleções Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Swift Academy?

Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 1.

Quanto tempo leva a aula “Coleções”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Swift Academy?

Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

← Voltar para Swift Academy