Las computed properties en Swift permiten calcular valores al vuelo y mantener la coherencia del modelo. Aquí verás cómo usar getter y setter para obtener y modificar el center de un rectángulo a partir de su origin y size, evitando inconsistencias comunes entre stored properties.
¿Qué es una computed property y por qué evita inconsistencias?
Una computed property no almacena datos: los calcula según otras propiedades. Así se evita duplicar información y caer en desajustes entre variables relacionadas.
stored properties: datos guardados como x, y, width, height.
computed property: valor derivado como center.
Beneficio clave: si cambias el center, el setter ajusta el origin sin tocar el size.
¿Cómo se evita el desajuste entre origin, size y center?
Definiendo center como computed property.
Con un getter que calcula el centro: origin.x + width/2 y origin.y + height/2.
Con un setter que, dado un nuevo centro, actualiza origin.x e origin.y restando la mitad de width y height.
¿Qué conceptos y habilidades se practican?
Modelado con estructuras: Point, Size, Rect.
Uso de getter y setter para encapsular lógica.
Cálculo geométrico 2D: mitades de width y height.
Estilo Swift: return implícito en getters de una línea y uso de newValue en setters.
¿Cómo implementar getters y setters en Swift con un rectángulo?
A partir de un Rect definido por origin: Point y size: Size, se calcula un center: Point. El getter suma la mitad de la anchura y altura; el setter reposiciona el origen conservando el tamaño.
¿Qué ejemplos muestran el cálculo del centro y los efectos del setter?
Con un cuadrado de 10 por 10 cuyo origen es (0, 0), el centro se calcula y se actualiza automáticamente al cambiarlo.
var square =Rect( origin:Point(x:0, y:0), size:Size(width:10, height:10))let initialSquareCenter = square.center // (5, 5)// Mover el centro a (20, 20): ajusta el origen a (15, 15)square.center =Point(x:20, y:20)// Mover el centro a (18, 3): ajusta el origen a (13, -2)square.center =Point(x:18, y:3)
¿Qué patrones de código optimizan el resultado?
En el getter, una sola línea permite return implícito.
En el setter, puedes omitir el nombre y usar newValue.
Menos líneas y menos variables intermedias para código más claro.
¿Te gustaría ver más patrones de uso de computed properties o casos con otras figuras geométricas? Comparte tu duda o ejemplo ideal para explorarlo juntos.