Modificación de Constructores y Parámetros Opcionales en Swift
Clase 19 de 27 • Curso de Programación Orientada a Objetos en Swift
Contenido del curso
Tipos de Propiedades
- 5

Propiedades Almacenadas en Swift: Uso y Ejemplos Prácticos
04:48 min - 6

Propiedades Lazy en Programación: Uso y Ventajas
07:16 min - 7

Propiedades Computadas en Swift: Uso y Ejemplos Prácticos
10:30 min - 8

Computed properties de solo lectura en Swift
05:14 min - 9

Observers en Swift: willSet y didSet
07:18 min - 10

Variables estáticas en clases, estructuras y enumerados
09:19 min
Métodos, subíndices y herencia
- 11

Métodos de instancia en Swift con self
07:35 min - 12

Métodos Mutantes en Estructuras y Enumerados en Swift
09:05 min - 13

Métodos de clase en Swift: static vs class
10:50 min - 14

Subíndices en Swift: Sintaxis y Aplicaciones Prácticas
09:01 min - 15

Manipulación de Matrices y Subíndices en Programación
12:27 min - 16

Herencia de Clases en Programación Orientada a Objetos
10:14 min - 17

Sobrescritura de Métodos y Propiedades en Clases Derivadas
12:11 min
Inicializadores o constructores
- 18

Inicializadores en Sweet: Creación y Uso Efectivo de Constructores
06:50 min - 19

Modificación de Constructores y Parámetros Opcionales en Swift
Viendo ahora - 20

Constructores Designados y de Conveniencia en Herencia de Clases
09:37 min - 21

Constructores y manejo de inicialización opcional en Swift
08:42 min - 22

Destructores en Programación: Liberación de Recursos Automática
07:12 min
Encadenamiento opcional
Conclusión
Domina los inicializadores en Swift con buenas prácticas de nombres, etiquetas de parámetros y manejo de opcionales. Verás cómo crear varios inicializadores en una misma estructura, cuándo omitir etiquetas con subrayado para una sintaxis más legible y qué propiedades debes inicializar siempre en una clase. Todo con ejemplos simples y directos.
¿Cómo crear y sobrecargar inicializadores en Swift?
Definir varios inicializadores permite construir un mismo tipo de diferentes formas. En una estructura de color, las componentes rojo, verde y azul se representan como valores de tipo Double. Si los parámetros de init se llaman igual que las propiedades, usa self. para asignar correctamente.
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
}
// Escala de grises: las tres componentes comparten el mismo valor.
init(white: Double) {
self.red = white
self.green = white
self.blue = white
}
}
// Ejemplos de uso
let magenta = Color(red: 1, green: 0, blue: 3)
let halfGray = Color(white: 0.5)
- Puedes definir múltiples inicializadores con diferentes firmas.
- Cuando coinciden nombres, usa self.propiedad = parámetro.
- Escala de grises: un único parámetro se propaga a las tres componentes.
- Llamadas explícitas: usa etiquetas de argumento como red:, green:, blue:.
¿Por qué las etiquetas de parámetros son obligatorias en struct?
En Swift, las estructuras generan inicializadores con etiquetas externas por defecto. Al invocar, debes incluirlas; omitirlas provoca error. Es una ayuda de legibilidad y claridad.
// Error: faltan etiquetas externas
auto let c = Color(1, 0, 1) // ❌
// Correcto: con etiquetas
let c = Color(red: 1, green: 0, blue: 1) // ✅
¿Cuándo omitir una etiqueta con subrayado en init?
Hay parámetros cuyo nombre se sobreentiende por el contexto. En un tipo Celsius, escribir la etiqueta externa "celsius" al invocar puede resultar redundante. Para lograr una lectura natural, usa el subrayado en la etiqueta externa del init.
struct Celsius {
var temperature: Double
// Omitir etiqueta externa con "_"
init(_ celsius: Double) {
self.temperature = celsius
}
}
let bodyTemperature = Celsius(37)
- Lectura fluida: cuando el contexto es claro, omite la etiqueta externa.
- Sintaxis: declara el init con "_" como etiqueta externa.
- Invocación: pasa solo el valor, sin nombre de parámetro.
¿Cómo manejar propiedades opcionales y requeridas en una clase?
Las propiedades no opcionales deben quedar inicializadas al final del init. Las opcionales pueden empezar sin valor. En una pregunta de encuesta, el texto es obligatorio, la respuesta puede ser String?. Además, si el texto no cambia, declara la propiedad como constante con let.
class SurveyQuestion {
let text: String
var response: String?
init(text: String) {
self.text = text
}
func ask() {
print(text)
}
}
let q1 = SurveyQuestion(text: "¿Te gustan los tacos?")
q1.ask() // Muestra la pregunta.
q1.response = "Sí, me encantan todos ellos" // Se asigna después.
- Propiedades requeridas: deben inicializarse siempre en el init.
- Propiedades opcionales: pueden permanecer sin valor hasta más tarde.
- Inmutabilidad útil: usa let cuando el valor no cambia.
- Flujo natural: primero se formula la pregunta, luego llega la respuesta.
¿Tú cómo eliges las etiquetas de parámetros en tus inits? Comparte en comentarios tus ejemplos de inicializadores, usos de subrayado y manejo de opcionales en Swift.