Lição: 20: Propriedades (Armazenadas e Computadas)
No Swift, propriedades são variáveis ou constantes associadas a uma classe, estrutura ou enumeração. Elas permitem que você armazene valores e são uma parte fundamental das estruturas de dados no Swift. Existem dois tipos principais de propriedades: propriedades armazenadas e propriedades computadas.
Propriedades Armazenadas
Propriedades armazenadas são usadas para guardar valores constantes ou variáveis como parte de uma instância de uma classe ou estrutura. Cada instância de uma classe ou estrutura pode ter seus próprios valores para as propriedades armazenadas.
Definindo Propriedades Armazenadas
Aqui está um exemplo simples para ilustrar as propriedades armazenadas em uma estrutura:
struct Pessoa {
var nome: String
var idade: Int
}
var pessoa1 = Pessoa(nome: "Alice", idade: 30)
print("Nome: \(pessoa1.nome), Idade: \(pessoa1.idade)")
Neste exemplo, Pessoa
é uma estrutura contendo duas propriedades armazenadas: nome
(do tipo String
) e idade
(do tipo Int
). Cada instância de Pessoa
pode ter seu próprio nome
e idade
.
Valores Padrão para Propriedades
Você também pode fornecer valores padrão para as propriedades armazenadas:
struct Veiculo {
var marca: String = "Desconhecida"
var modelo: String = "Desconhecido"
}
let meuCarro = Veiculo()
print("Marca do carro: \(meuCarro.marca), Modelo: \(meuCarro.modelo)")
Nesse caso, se uma instância de Veiculo
for criada sem fornecer a marca
e o modelo
, será atribuído o valor padrão "Desconhecida".
Propriedades Computadas
Propriedades computadas não armazenam um valor diretamente. Em vez disso, elas fornecem um getter e um setter opcional para definir e recuperar indiretamente outras propriedades ou valores. Propriedades computadas podem ser definidas em classes e estruturas.
Definindo Propriedades Computadas
Aqui está um exemplo simples de uma propriedade computada:
struct Retangulo {
var largura: Double
var altura: Double
var area: Double {
return largura * altura
}
}
let meuRetangulo = Retangulo(largura: 5.0, altura: 3.0)
print("Área do retângulo: \(meuRetangulo.area)")
Neste exemplo, Retangulo
possui uma propriedade computada area
que calcula a área do retângulo com base na sua largura
e altura
.
Propriedades Computadas com Setters
Você também pode criar propriedades computadas que têm um setter para permitir modificações:
struct Circulo {
var raio: Double
var area: Double {
get {
return Double.pi * raio * raio
}
set {
raio = sqrt(newValue / Double.pi)
}
}
}
var meuCirculo = Circulo(raio: 3.0)
print("Área do círculo: \(meuCirculo.area)") // Mostra a área com base no raio
meuCirculo.area = 50.0 // Define a área, que atualiza o raio
print("Novo raio após definir a área: \(meuCirculo.raio)")
Neste exemplo, ao definir a area
, o setter calcula o raio
com base no novo valor da área.
Resumo
No Swift, as propriedades são essenciais para definir as características de classes e estruturas. Compreender a diferença entre propriedades armazenadas, que guardam dados, e propriedades computadas, que calculam valores dinamicamente, é crucial para o uso eficaz do Swift. Ao utilizar essas propriedades corretamente, você pode criar um código mais robusto e flexível.