Je comprends que dans Swift toutes les variables doivent être définies avec une valeur, et qu'en utilisant des options, nous pouvons définir une variable à définir nil
initialement.
Ce que je ne comprends pas, c'est ce que fait la définition d'une variable avec a !
, car j'avais l'impression que cela «déballe» une valeur d'une option. Je pensais qu'en faisant cela, vous garantissiez qu'il y avait une valeur à dérouler dans cette variable, c'est pourquoi sur IBActions et autres, vous la voyez utilisée.
Donc, en termes simples, à quoi la variable est-elle initialisée lorsque vous faites quelque chose comme ceci:
var aShape : CAShapeLayer!
Et pourquoi / quand ferais-je cela?
Réponses:
Dans une déclaration de type, le
!
est similaire au?
. Les deux sont optionnels, mais le!
est un optionnel " implicitement déroulé" , ce qui signifie que vous n'avez pas à le déballer pour accéder à la valeur (mais il peut toujours être nul).C'est fondamentalement le comportement que nous avions déjà dans objective-c. Une valeur peut être nulle, et vous devez la vérifier, mais vous pouvez également accéder directement à la valeur comme si ce n'était pas facultatif (avec la différence importante que si vous ne cochez pas nil, vous obtiendrez un erreur d'exécution)
Usage:
la source
nil
valeur et en fait "travailler" avec elle, en accédant rapidement à un optionnel implicitement déballé alors qu'il est nul, il lèvera une exception d'exécution.