Una estructura es un tipo de dato complejo que encapsula datos (variables y constantes, también llamados propiedades, miembros o atributos) y comportamiento (métodos). Las instancias de una estructura son únicas.
Atributos
Los atributos de una estructura se pueden definir de forma explícita (i.e. var nombre: Tipo = valor) o dejar que Swift infiera el tipo (i.e. var nombre = valor).
struct Person {
var name: String = "David"
var age: Int = 10
}
var instance1 = Person()
La instancia es creada por el inicialiador de Person (i.e. Person() o Person.init()) y asignada a la variable instance1.
Para acceder a un atributo se usa la notación punto, como en instancia.propiedad, donde instancia es el nombre de la variable que contiene la instancia de la estructura y propiedad es el nombre de la propiedad que se quiere acceder.
struct Person {
var name = "David"
var age = 10
}
var instance1 = Person()
instance1.age = 11
print("Persona: \(instance1.name)")
Para modificar los valores de una estructura se requiere que los atributos de la estructura sean variables (e.g. var name, var age). Además de eso, la instancia de la estructura también debe ser variable (e.g. var instance1) porque al modificar una variable, en realidad el sistema crea una nueva estructura con los nuevos valores, que luego reemplaza por la instancia inicial.
Métodos
Una función definida dentro de una estructura se llama método.
La sintaxis para invocar un método es: instancia.metodo() donde instancia es el nombre de la variable que contiene la instancia de la estructura y metodo() es el nombre del método que se quiere invocar sobre esa instancia. Por ejemplo:
struct Person {
var name = "David"
var age = 10
func saludar() {
print("Hola, soy \(name) y tengo \(age) años")
}
}
var instance1 = Person()
instance1.age = 11
instance1.saludar()
Gracias a los métodos, no es necesario conocer los detalles del comportamiento definido en él, ni tampoco es necesario extraer la información de los atributos de la estructura. Simplemente se le pasan los argumentos que hagan falta y se deja a la instancia hacer el trabajo.
Para cambiar los valores de una estructura con un método, se lo debe modificar con la palabra clave mutating. Por ejemplo:
struct Person {
var name = "David"
var age = 10
func saludar() {
print("Hola, soy \(name) y tengo \(age) años")
}
mutating func crecer() {
age += 1
}
}
var instance1 = Person()
instance1.age = 11
instance1.crecer()
instance1.saludar() // Hola, soy David y tengo 12 años
Top comments (0)