Uso de Struct e Class em Swift
Em Swift, tanto struct
quanto class
são usadas para criar tipos de dados. A principal diferença entre as duas é que struct
é um tipo de valor (value type), enquanto class
é um tipo de referência (reference type).
Em termos simples, uma struct
é uma cópia independente de um objeto, enquanto uma class
aponta para uma referência compartilhada. Quando uma struct
é passada para uma função ou atribuída a uma variável, é criada uma cópia separada da mesma.
Uma struct
é um tipo de valor, o que significa que quando você atribui uma instância de uma estrutura a uma variável ou passa uma estrutura para uma função, uma cópia completa da estrutura é criada. As struct
são geralmente usadas para representar tipos de dados mais simples, como um ponto em um plano cartesiano ou uma data.
Por outro lado, uma class
é um tipo de referência, o que significa que quando você atribui uma instância de uma classe a uma variável ou passa uma classe para uma função, uma referência à instância da classe é criada.
O tipo class
geralmente é usado para representar tipos de dados mais complexos, como um objeto em um jogo ou uma conta de usuário em um aplicativo.
Aqui está um exemplo simples de como criar uma struct
e uma class
em Swift:
// Definindo uma struct
struct Person {
var name: String
var age: Int
}
// Instanciando de struct
print(person1.name) // Lucas
print(person2.name) // Amanda
// Definindo uma class
class Car {
var brand: String
var model: String
init(brand: String, model: String) {
self.brand = brand
self.model = model
}
}
// Instanciando uma Class
var car1 = Car(brand: "Toyota", model: "Corolla")
var car2 = car1 // Criando uma referência compartilhada
car2.brand = "Honda"
print(car1.brand) // Honda
print(car2.brand) // Honda
Usamos struct
quando precisar criar um tipo de valor simples e que não precise de herança, ou se você quiser garantir que os objetos sejam independentes.
Usamos class
quando precisar criar tipos mais complexos que podem ser compartilhados entre diferentes instâncias e que precisam suportar herança.