Entiendo que en Swift todas las variables deben establecerse con un valor, y que al usar opcionales podemos establecer una variable que se establecerá nil
inicialmente.
Lo que no entiendo es qué !
está haciendo la configuración de una variable con a , porque tenía la impresión de que esto "desenvuelve" un valor de un opcional. Pensé que al hacerlo, estás garantizando que hay un valor para desenvolver en esa variable, por lo que en IBActions y demás lo ves usado.
En pocas palabras, ¿cuál es la variable que se inicializa cuando haces algo como esto?
var aShape : CAShapeLayer!
¿Y por qué / cuándo haría esto?
Respuestas:
En una declaración de tipo, el
!
es similar al?
. Ambos son opcionales, pero!
es un opcional " implícitamente desenvuelto " , lo que significa que no es necesario desenvolverlo para acceder al valor (pero aún puede ser nulo).Este es básicamente el comportamiento que ya teníamos en objetivo-c. Un valor puede ser nulo, y debe verificarlo, pero también puede acceder al valor directamente como si no fuera opcional (con la importante diferencia de que si no marca cero, obtendrá un valor Error de tiempo de ejecución)
Uso:
fuente
nil
valor y, de hecho el "trabajo" con él, en un rápido acceso a envolver implícitamente opcional, mientras que es nula será una excepción de tiempo de ejecución.