Una propiedad lazy se inicializa solo la primera vez que se accede, lo que evita trabajo innecesario en el constructor:
class AnalizadorTexto {
var texto: String
lazy var palabras: [String] = {
print("Analizando...")
return texto.components(separatedBy: " ")
}()
init(texto: String) { self.texto = texto }
}
let a = AnalizadorTexto(texto: "swift es rapido")
// "Analizando..." no se imprime todavia
print(a.palabras.count) // ahora si: 3
willSet y didSet
class Termostato {
var temperatura: Double = 20.0 {
willSet { print("Va a cambiar a (newValue)") }
didSet { print("Cambio de (oldValue) a (temperatura)") }
}
}
let t = Termostato()
t.temperatura = 25.0
// Va a cambiar a 25.0
// Cambio de 20.0 a 25.0
Type properties: static y class
struct Configuracion {
static let version = "2.0"
static var instancias = 0
}
print(Configuracion.version) // 2.0
Configuracion.instancias += 1
print(Configuracion.instancias) // 1
