SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
14.11.2024

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.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!