Skip to content

This repository is your complete guide to learning the fundamentals of Swift programming.

License

Notifications You must be signed in to change notification settings

natorsc/swift-lang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Linguagem de programação Swift

Linguagem de programação Swift

natorsc - swift stars - swift forks - swift License MIT

✨ Sobre este projeto

Este repositório é o seu guia completo para aprender os fundamentos da programação Swift. Seja você um desenvolvedor iniciante ou experiente, encontrará tutoriais práticos, dicas e exemplos reais de código para fortalecer suas habilidades e levar seus projetos para o próximo nível.

Se este conteúdo o ajudou, considere fazer uma doação. Seu apoio faz uma diferença real e ajuda o projeto a crescer! 💙

🛠 Tecnologias utilizadas

Swift

👨‍💻 Autor

Criado com 💙 por Renato Cruz. Tem alguma dúvida ou comentário? Entre em contato a qualquer momento!

Email

O que estou ouvindo enquanto programo ou estudo 😎🎵:

Spotify

💝 Apoie este projeto

Sua doação mantém este projeto vivo e me ajuda a continuar criando e compartilhando conteúdo útil.

GitHub Sponsors

https://github.com/sponsors/natorsc/

Pix (Brazil)

b1839493-2afe-484d-9272-82a3e402b36f


📑 Tutoriais

💡 Extra

LSP

GUIs

Web framework

HTTP server

Package manager

Package index

Visual Studio Code

Swift SDK Bundles

Additional components for cross-compilation.

Change the version according to your needs.

Linux

swift sdk install \
https://download.swift.org/swift-6.2-release/static-sdk/swift-6.2-RELEASE/swift-6.2-RELEASE_static-linux-0.0.1.artifactbundle.tar.gz \
--checksum d2225840e592389ca517bbf71652f7003dbf45ac35d1e57d98b9250368769378

WebAssembly

swift sdk install \
https://download.swift.org/swift-6.2-release/wasm/swift-6.2-RELEASE/swift-6.2-RELEASE_wasm.artifactbundle.tar.gz \
--checksum fe4e8648309fce86ea522e9e0d1dc48e82df6ba6e5743dbf0c53db8429fb5224

Versões da linguagem de programação Swift

Data Swift Xcode
Dev 6.3 nil
15/09/2025 6.2 26
31/03/2025 6.1 16.3
16/09/2024 6.0 16.0
05/03/2024 5.10 15.3
08/01/2024 5.9.2 15.2
11/12/2023 5.9.2 15.1
18/09/2023 5.9 15.0
01/06/2023 5.8.1 14.3.1
30/03/2023 5.8 14.3
13/12/2022 5.7.2 14.2
01/11/2022 5.7.1 14.1
12/09/2022 5.7 14.0
16/05/2022 5.6.1 13.4
14/03/2022 5.6 13.3
13/12/2021 5.5.2 13.2
25/10/2021 5.5.1 13.1
20/09/2021 5.5 13.0
21/06/2021 5.4.2 12.5.1
26/04/2021 5.4 12.5
26/01/2021 5.3.2 12.4
14/12/2020 5.3.2 12.3
12/11/2020 5.3.1 12.2
16/09/2020 5.3 12.0
20/05/2020 5.2.4 11.5
15/04/2020 5.2.2 11.4.1
24/03/2020 5.2 11.4
13/12/2019 5.1.3 11.3
07/11/2019 5.1.2 11.2
20/09/2019 5.1 11.0
18/04/2019 5.0.1 10.2.1
25/03/2019 5.0 10.2
30/10/2018 4.2.1 10.1
17/09/2018 4.2 10.0
31/05/2018 4.1.2 9.4
29/03/2018 4.1 9.3
05/12/2017 4.0.3 9.2
01/11/2017 4.0.2 9.1
19/09/2017 4.0 9.0
27/03/2017 3.1 8.3
13/12/2016 3.0.2 8.2
28/10/2016 3.0.1 8.1
13/09/2016 3.0 8.0
21/03/2016 2.2 7.3
20/10/2015 2.1 7.1
21/09/2015 2.0 7.0
08/04/2015 1.2 6.3
22/10/2014 1.1 6.1
09/09/2014 1.0 6.0.1

Principais comandos

swift build  # Compilar pacotes Swift.
swift package init  # Inicia um projeto simples (vazio).
swift package init --type=executable  # Inicia um pacote com um executável.
swift package init --type=tool  # Inicia um pacote com um executável com Swift Argument Parser.
swift package init --type=library # Inicia um pacote com uma biblioteca.
swift package add-dependency  # Adicionar uma dependência ao projeto/pacote.
swift file.swift  # Executa um programa/pacote/script.
swift test  # Executa os testes do projeto.
swift repl  # Executa o modo interativo da linguagem de programação swift.
swift --version  # Exibe a versão da linguagem de programação.
swift --help  # Exibe a ajuda.
swift help <subcommand>  # Exibe a ajudar para o subcomando.

Variáveis

Para criar variáveis a linguagem de programação Swift utiliza as seguintes palavras reservadas:

  • var: Variáveis que podem ser modificadas.
  • let: Variáveis imutáveis (contantes).

Anotação de tipo

Na linguagem de programação Swift a anotação de tipo não é obrigatória:

// Com anotação de tipo.
var name: String = "Renato"

// Sem anotação de tipo.
var surname = "Cruz"

Ambas as variáveis funcionam da mesma forma.

Tipos de variáveis.

Int

Representa números inteiros.

var a = 10

Double

Representa números de ponto flutuante com precisão dupla.

var a = 10.0000

Float

Representa números de ponto flutuante com precisão simples.

var a = 10.00

Bool

Representa valores booleanos (true ou false).

var a = true

String

Representa sequências de caracteres.

var a = "Olá, mundo!"

Character

Representa um único caractere.

var a = "R"

Array

Representa uma coleção de valores do mesmo tipo.

var a = ["a", "e", "i", "o", "u"]

Dictionary

Representa uma coleção de pares (chave-valor).

var a = [
  "Key1": "Value1",
  "Key2": "Value2"
]

Set

Representa uma coleção de valores únicos.

var a = [
  "The Dream",
  "The Starry Night",
  "The False Mirror"
]

tuplas

As tuplas permitem agrupar valores de diferentes tipos em uma única variável.

let person = ("Renato", 32)
print(person.0) // "Renato"
print(person.1) // 32

nil

Os tipos opcionais indicam que uma variável pode conter um valor ou ser nula (nil).

var age: Int? = nil
if let age = age {
    print("A idade é \(age)")
} else {
    print("Idade não informada")
}

Exibir o tipo de uma variável

print(type(of: nome-da-variável))

Classes e structs

Em Swift, tanto struct quanto class permitem criar tipos personalizados que agrupam propriedades e métodos.

Mas existem diferenças fundamentais entre elas, que impactam na forma como seu código funciona.

Principais diferenças entre struct e class

  1. Tipo de valor vs tipo de referência
  • Struct é um Value Type: quando você passa uma struct para uma função ou a atribui a outra variável, ela é copiada.
  • Class é um Reference Type: quando você passa uma instância de classe, você está passando uma referência para o mesmo objeto na memória.
struct PersonStruct {
    var name: String
}

class PersonClass {
    var name: String
}

var person1 = PersonStruct(name: "Renato")
var person2 = person1
person2.name = "Maria"

print(person1.name) // "Renato" (cópia independente).
print(person2.name) // "Maria"

var person3 = PersonClass(name: "Renato")
var person4 = person3
person4.name = "Maria"

print(person3.name) // "Maria" (ambos apontam para o mesmo objeto).
print(person4.name) // "Maria"
  1. Herança
  • Struct ❌ não suporta herança.
  • Class ✅ suporta herança.
class Animal {
    func sound() {
        print("Any sound")
    }
}

class Dog: Animal {
    override func sound() {
        print("Bark")
    }
}

let dog = Dog()
dog.sound() // "Latido".
  1. Mutabilidade
  • Em structs, se a instância for declarada como let, você não pode alterar suas propriedades mutáveis.
  • Em classes, mesmo se a instância for let, você pode alterar suas propriedades mutáveis (desde que não sejam let dentro da classe).
struct BankAccountStruct {
    var balance: Int
}

class BankAccountClass {
    var balance: Int
    init(balance: Int) {
        self.balance = balance
    }
}

let account1 = BankAccountStruct(balance: 100)
// account1.balance = 200 // ❌ Erro: struct é imutável com let.

let account2 = BankAccountClass(balance: 100)
account2.balance = 200 // ✅ Permitido.
print(account2.balance) // 200
  1. Identidade
  • Structs não têm identidade única (são apenas valores).
  • Classes têm identidade, então você pode comparar referências usando ===.
class Person {
    var name: String
    init(name: String) { self.name = name }
}

let p1 = Person(name: "Renato")
let p2 = p1
print(p1 === p2) // true (apontam para o mesmo objeto).

Code examples

ToDo.

About

This repository is your complete guide to learning the fundamentals of Swift programming.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Languages