Esta es la segunda clase de esta parte del curso. La primera es esta: https://platzi.com/clases/1791-swift-5-poo/25029-metodos-de-instancia/
Estructuras y Clases
Programación Orientada a Objetos en Swift
Clases vs. Estructuras: Conceptos y Diferencias en Swift
Diferencias entre Estructuras y Clases en Swift: Copia de Valores vs Referencias
Clases en Swift: Datos por Referencia y Comparación de Objetos
Tipos de Propiedades
Programación Swift: Variables y Estructuras
Aprovecha las Kotlin Lazy Properties en Desempeño de Apps
Propiedades Computadas en Swift: Cálculo Automatizado de Valores
Variables de Sólo Lectura en Swift
Observadores de Properties en Swift: WillSet y DidSet
"Uso de la palabra clave 'static' en Swift"
Métodos, subíndices y herencia
Métodos en Clases y Estructuras: Creación y Uso Práctico
Métodos Mutables en Swift: Cambia Propiedades en Estructuras y Enumerados
Métodos Estáticos y Atributos Compartidos en Videojuegos
Subíndices en Swift: Implementación y Uso Práctico
Matrices: Manipulación y Operaciones Básicas
Herencia de Clases en Swift: Conceptos y Ejemplos Prácticos
Sobreescritura de Métodos y Propiedades en Python
Inicializadores o constructores
Conversión de Grados: Celsius, Fahrenheit y Kelvin
Clases y Constructores en Programación: Sintaxis y Modificación
Constructores designados y de conveniencia en Swift
Manejo de Constructores y Valores Nullable en Swift
Programación Orientada a Objetos: Constructores y Destructores en Java
Encadenamiento opcional
Encadenamiento de Opcionales en Swift
Creación de Clases y Gestión de Opcionales en Swift
Programación Segura con Opcionales en Swift
Encadenamiento de Opcionales en Swift: Cómo Evitar Errores Comunes
Conclusión
Programación en iOS con Swift: Fundamentos y Prácticas
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
En el mundo de la programación, las estructuras y enumerados son tipos de datos evaluables que, una vez definidos como constantes, no permiten modificar sus valores internos. Sin embargo, en lenguaje Swift, es posible cambiar estos valores a través de métodos llamados funciones mutantes. Este tipo de función utiliza la palabra reservada mutating
para indicar que puede modificar los valores de las propiedades de una estructura o enumerado.
Para entender el uso de una función mutante en estructuras, consideremos el siguiente ejemplo donde tenemos una estructura llamada Punto
:
struct Punto {
var x: Int
var y: Int
mutating func mueve(deltaX: Int, deltaY: Int) {
x += deltaX
y += deltaY
}
}
En este caso, como la función mueve
está marcada como mutating
, tiene el derecho de modificar los valores de x
y y
dentro de la estructura Punto
. Si nuestro punto es un variable, podemos usar este método para cambiar las coordenadas de manera segura.
mutating
?La palabra reservada mutating
es crucial porque:
mutating
?Sí, un caso relevante para usar funciones mutantes es cuando queremos modificar el propio valor de toda la estructura. Imaginemos un método dentro de la misma estructura Punto
:
mutating func reposicionar(x: Int, y: Int) {
self = Punto(x: x, y: y)
}
Aquí, estamos creando un nuevo punto con las coordenadas proporcionadas y reasignándolo a self
. Este tipo de función, gracias a la palabra mutating
, permite reconfigurar completamente la estructura desde dentro.
Los enumerados, al igual que las estructuras, pueden beneficiarse de funciones mutantes para alterar sus estados. Supongamos que implementamos un ciclo de estados para un aire acondicionado:
enum EstadoAireAcondicionado {
case apagado, bajo, alto
mutating func avanzaEstado() {
switch self {
case .apagado:
self = .bajo
case .bajo:
self = .alto
case .alto:
self = .apagado
}
}
}
En este ejemplo, la función avanzaEstado
utiliza mutating
para permitir que el estado del aire acondicionado cambie de manera cíclica entre apagado, bajo y alto.
Al trabajar con funciones mutantes, es importante considerar lo siguiente:
Las funciones mutantes ofrecen una potente herramienta para modificar los valores interiores de estructuras y enumerados de una manera controlada y explícita, permitiendo mayor flexibilidad en el manejo de datos inmutables.
Aportes 6
Preguntas 1
Esta es la segunda clase de esta parte del curso. La primera es esta: https://platzi.com/clases/1791-swift-5-poo/25029-metodos-de-instancia/
Para poder modificar una propiedad desde un método de una estructura el método debe ser marcado como mutating.
struct Point{
var x: Int;
var y: Int;
mutating func moveTo(x deltaX: Int, y deltaY: Int){
self.x = deltaX;
self.y = deltaY
}
}
Se me hace un poco extraño que una propiedad de una estructura pueda modificarse desde fuera de la estructura pero no dentro de la misma a no ser que el método sea marcado como mutating.
Que bonito es lo bonito!!!
Me parece genial este lenguaje, es un sabor distinto
Thank you
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?