Modificación de Constructores y Parámetros Opcionales en Swift

Clase 19 de 27Curso de Programación Orientada a Objetos en Swift

Resumen

¿Cómo se definen los constructores en una estructura de colores?

Al trabajar con estructuras en lenguajes de programación, es crucial saber cómo definir constructores para inicializar estas estructuras adecuadamente. Al tomar como ejemplo la definición de un color, vemos que normalmente se hace utilizando valores de tipo decimal para los componentes rojo, verde y azul. Para este propósito, se puede crear un constructor init que acepte estos parámetros y los asigne a los atributos correspondientes de la estructura.

Ejemplo de un constructor básico

Para ilustrarlo, pensemos en una estructura Color con los componentes red, green y blue, todos de tipo Double. El constructor inicial sería así:

struct Color {
    var red: Double
    var green: Double
    var blue: Double
    
    init(red: Double, green: Double, blue: Double) {
        self.red = red
        self.green = green
        self.blue = blue
    }
}

Creación de un segundo constructor

Además, podemos necesitar un constructor diferente, como al trabajar con escala de grises, donde los tres componentes del color toman el mismo valor. Podríamos definir otro init que reciba solo el nivel de blanco entre 0 y 1:

init(grayscale white: Double) {
    self.red = white
    self.green = white
    self.blue = white
}

De esta forma, se pueden tener múltiples constructores dentro de la misma estructura para diferentes necesidades.

¿Cómo usar etiquetas para simplificar la sintaxis?

En el mundo de la programación, a veces queremos aligerar la sintaxis y evitar redundancias al inicializar los objetos. Por ejemplo, al crear una estructura para representar temperaturas en Celsius, introducir etiquetas puede hacer que el código quede más limpio al prescindir del nombre del parámetro explícitamente.

Ejemplo de una estructura con etiquetas

Supongamos que la estructura Celsius puede ser inicializada con diferentes métodos. Podemos definir un init simplificado usando una barra baja _ en lugar del nombre del parámetro:

struct Celsius {
    var temperatura: Double
    
    init(_ valorCelsius: Double) {
        self.temperatura = valorCelsius
    }
}

Con este enfoque, se puede crear un objeto Celsius de forma más directa y legible:

let corporal = Celsius(37.0)

¿Cómo hacer que un parámetro sea opcional?

En ciertas situaciones, es útil permitir que algunos parámetros sean opcionales, de modo que no sean necesarios al inicializar la estructura o clase. Por ejemplo, en la creación de una pregunta en una encuesta, la respuesta no siempre es obligatoria.

Definición con parámetros opcionales

Podemos crear una clase para este propósito:

class SurveyQuestion {
    var text: String
    var response: String?
    
    init(text: String) {
        self.text = text
    }
}

Aquí, response es opcional, y por lo tanto, podemos inicializar un objeto SurveyQuestion solo con el texto de la pregunta:

let question1 = SurveyQuestion(text: "¿Te gustan los tacos?")

Más tarde, si el usuario decide responder, simplemente se asigna el valor a response.

Práctica recomendada para desarrolladores

Ahora que conoces cómo trabajar con constructores, etiquetas y parámetros opcionales, puedes aplicar estos conceptos para mejorar la creación de objetos en tus proyectos:

  1. Implementa diferentes constructores: Prueba estructurar tus objetos con múltiples constructores que cubran distintas necesidades.
  2. Usa etiquetas sabiamente: Facilita la lectura de tu código usando etiquetas que hagan el uso de constructores más intuitivo.
  3. Considera la necesidad de parámetros opcionales: Piensa en la flexibilidad y posibles escenarios en los que ciertos datos no sean necesarios inmediatamente al crear el objeto.

Continúa experimentando y practicando, estos conceptos te serán muy útiles al tratar con estructuras más complejas en tu camino como desarrollador.ücklich