UPGRADE YOUR SKILLS: Learn advanced Swift and SwiftUI on Hacking with Swift+! >>

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.

BUILD THE ULTIMATE PORTFOLIO APP Most Swift tutorials help you solve one specific problem, but in my Ultimate Portfolio App series I show you how to get all the best practices into a single app: architecture, testing, performance, accessibility, localization, project organization, and so much more, all while building a SwiftUI app that works on iOS, macOS and watchOS.

Get it on Hacking with Swift+

Sponsor Hacking with Swift and reach the world's largest Swift community!

BUY OUR BOOKS
Buy Pro Swift Buy Pro SwiftUI Buy Swift Design Patterns Buy Testing Swift Buy Hacking with iOS Buy Swift Coding Challenges Buy Swift on Sundays Volume One Buy Server-Side Swift Buy Advanced iOS Volume One Buy Advanced iOS Volume Two Buy Advanced iOS Volume Three Buy Hacking with watchOS Buy Hacking with tvOS Buy Hacking with macOS 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!

 
Unknown user

You are not logged in

Log in or create account
 

Link copied to your pasteboard.