NEW: Join my free 100 Days of SwiftUI challenge today! >>

Estructuras

Las estructuras son un tipo de datos complejo, lo que significa que se componen de múltiples valores. Puedes crear una instancia de una estructura y rellenar sus valores, luego puedes pasarlos como un único valor en tu código. Por ejemplo, podemos definir una estructura Person que contenga dos atributos: clothes y shoes:

struct Person {
    var clothes: String
    var shoes: String
}

Cuando defines una estructura, Swift hace muy simple su creación ya que genera automáticamente lo denominado constructor de miembros. De forma sencilla, significa que puedes crear la estructura pasando sus valores iniciales para los dos atributos, como aquí:

let taylor = Person(clothes: "T-shirts", shoes: "sneakers")
let other = Person(clothes: "short skirts", shoes: "high heels")

Una vez que has creado la instancia de la estructura, puedes leer sus propiedades solamente escribiendo el nombre de la estructura, un punto, y la propiedad que quieres leer:

print(taylor.clothes)
print(other.shoes)

Si asignas una estructura a otra, Swift hace una copia por detrás, lo que esto es un duplicado completo e independiente de la original. Bien, esto no es del todo cierto, Swift usa una técnica llamada "copia en escritura" que significa que únicamente copia tus datos si intentas cambiarlos.

Para ayudarte a ver como funciona la copia de estructuras, escribe esto en tu playground:

struct Person {
    var clothes: String
    var shoes: String
}

let taylor = Person(clothes: "T-shirts", shoes: "sneakers")
let other = Person(clothes: "short skirts", shoes: "high heels")

var taylorCopy = taylor
taylorCopy.shoes = "flip flops"

print(taylor)
print(taylorCopy)

Esto crea dos estructuras de tipo Person, después crea una tercera llamada taylorCopy como una copia de taylor. Lo que pasa a continuación es lo interesante: el código cambia taylorCopy, e imprime por pantalla ambos. Si miras en el panel de resultados (puede que tengas que ajustar el tamaño) verás que la copia tiene un valor diferente al original: cambiar uno no cambia el otro.

Funciones dentro de estructuras

Puedes poner funciones dentro de estructuras, y es una buena idea hacerlo para todas las funciones que lean o cambien datos dentro de la estructura. Por ejemplo, podríamos añadir una función a nuestra estructura Persona para describir lo que visten, como aquí:

struct Person {
    var clothes: String
    var shoes: String

    func describe() {
        print("I like wearing \(clothes) with \(shoes)")
    }
}

Esta es una cosa más que debes saber pero que no puedes ver en el código: cuando escribes una función dentro de una estructura, se llama método. En Swift escribes func independientemente de que sea una función o un método, pero esta distinción se reserva a cuando hablas de ella.

LEARN SWIFTUI FOR FREE I have a massive, free SwiftUI video collection on YouTube teaching you how to build complete apps with SwiftUI – check it out!

MASTER SWIFT NOW
Buy Testing Swift Buy Practical iOS 12 Buy Pro Swift Buy Swift Design Patterns Buy Swift Coding Challenges Buy Server-Side Swift (Vapor Edition) Buy Server-Side Swift (Kitura Edition) Buy Hacking with macOS Buy Advanced iOS Volume One Buy Advanced iOS Volume Two Buy Hacking with watchOS Buy Hacking with tvOS Buy Hacking with Swift Buy Dive Into SpriteKit Buy Swift in Sixty Seconds Buy Objective-C for Swift Developers Buy Beyond Code

Was this page useful? Let us know!