Categories
Swift Development

100 Días de Swift Día 9

Estas son mis notas para el curso https://www.hackingwithswift.com

Entrada anterior

“I choose a lazy person to do a hard job, Because a lazy person will find an easy way to do it.”

Bill Gates

«Escojo a una persona floja para hacer un trabajo difícil, por que una persona floja buscara la forma mas fácil de hacerlo»

Bill Gates

Structs, part two

Referring to the current instance

Cuando creas un metodo con parámetros que tienen el mismo nombre que los parámetros de tu Struc puedes usar la constante self para distinguir entre uno y otro

struct Usuario {
    var nombre: String
    
    init(nombre: String) {
        self.nombre = nombre
    }
}

var usuario = Usuario(nombre: "Juan")
print(usuario.nombre)

Lazy properties

Como una optimización de recursos, Swift deja crear «Lazy vars» que son variables que no se crean hasta que son llamadas por primera vez, por ejemplo en teoría crear una familia debería tomar algo de tiempo para una persona


struct Familia {
    init() {
        print("Esto deberia tomar un par de años por lo menos ")
    }
}


struct Usuario {
    var nombre: String
    lazy var familia = Familia()
    init(nombre: String) {
        self.nombre = nombre
    }
}


var usuario = Usuario(nombre: "Juan")
print(usuario.nombre)

Si colocamos la palabra lazy antes de nuestra var la variable no se creara hasta que esta sea llamada por primera vez.

Algunos de nuestros usuarios quizás ni la usen.

Como ves nuestra variable no es creada hasta la llamamos por primera vez

Static properties and methods

Todas las propiedades y métodos que creamos pertenecen a las instancias individuales de cada estructura, pero si marcamos una variable como estática, esta pertenecía a la estructura y no a su instancia, esto quiere decir que sera compartida entre todas las instancias que creemos.

struct Estudiantes {
    var nombre : String
    static var tamañoDelaClase = 0
    
    init(nombre: String) {
        self.nombre = nombre
        Estudiantes.tamañoDelaClase +=  1
    }
}


let mario = Estudiantes(nombre: "Mario")
let juan = Estudiantes(nombre: "Juan")
print(Estudiantes.tamañoDelaClase)

Puedes ver que para acceder a esta variable entramos directo en Estudiantes en lugar de usar self o el nombre de la instancia.

Access control

El control de acceso te deja restringir que código pueden usar propiedades y métodos, esto es importante por que nos sirve para evitar que la gente lea propiedades de forma directa.

Algo muy importante al realizar la Abstracción en POO

Para proteger una variable solo tenemos que añadir la palabra clave «private»

Otra palabra clave es «public» que hace sorpresa sorpresa lo opuesto.

Resumen

Puedes crear tus propios tipos de datos usando Structures, las cuales pueden tener sus propias propiedades y métodos

Puedes usar stored properties o usar computed properties para calcular valores al momento

Los Initializers son métodos especiales para crear structs, las structs tienen uno por default, pero podemos crear nuestro propio inicializador personalizado. Solo debemos asegurarnos todos los parámetros tenga un valor antes de que termine.

Usamos la constate self. para referirnos a la instancia actual de nuestra struct dentro de un método.

Usamos Lazy para crear una propiedad hasta que esta es llamada por primera vez

Puedes compartir propiedades y métodos entre instancias a usar la palabra reservada Static

Access control te deja restringir que código puede usar propiedades y métodos.

//y esas fueron las structs, un concepto muy importe en Swift 

Referencias

https://www.hackingwithswift.com

https://www.hackingwithswift.com/100/9

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *