Swift variable des décorations avec des “?” (point d'interrogation) et “!” (point d'exclamation)
Je comprends que Swift toutes les variables doivent être définies avec une valeur, et que par l'utilisation d'options, nous pouvons définir une variable à définir nil
initialement.
Ce que je ne comprends pas, c'est, ce que la définition d'une variable avec un !
est en train de faire, parce que j'étais sous l'impression que cette "déballe" d'une valeur d'une option. J'ai pensé en le faisant, vous garantissent que il ya une valeur à déballer dans cette variable, c'est pourquoi sur IBActions et vous voyez qu'il est utilisé.
Donc, tout simplement, qu'est-ce que la variable initialisée à quand vous faites quelque chose comme ceci:
var aShape : CAShapeLayer!
Et pourquoi/quand puis-je faire?
- Vous voulez faire cela pour dire qu'une variable est nt néant après - vous vérifié ce fait.
- Je ne pense pas que cela devrait être marqué comme un doublon. "Qu'est ce qu'une option?" n'est pas la même question comme "Quelle est la différence entre les deux types d'options?", qui est à peu près ce que cette question est
- même dans ce cas, il y a déjà des tonnes de questions concernant les options, implicitement déballé options, et la comme. Vous pouvez également vous reporter à celui-ci: stackoverflow.com/questions/24272781/...
- Ok, mais je suis sûr que cette question n'était pas d'un doublon lorsqu'il a été demandé. (il a été demandé une semaine avant votre exemple, par exemple)
- Vous faites un bon point, je n'ai pas remarqué ce fut plus..peut-être que l'autre devrait être marqué comme un doublon de celui-ci à la place..
Vous devez vous connecter pour publier un commentaire.
Dans une déclaration de type de la
!
est similaire à la?
. Les deux sont une option, mais une le!
est un "implicitement déballé" en option, ce qui signifie que vous n'avez pas à déballer pour accéder à la valeur (mais il peut encore être nul).C'est fondamentalement le comportement que nous avions déjà en objective-c. Une valeur peut être nul, et vous devez les vérifier, mais vous pouvez aussi accéder à la valeur directement comme si ce n'était pas une option (avec la différence importante que si vous ne cochez pas de zéro, vous obtiendrez une erreur d'exécution)
Utilisation:
nil
valeur et en fait "travailler" avec elle, dans swift accès à une implicitement déballé en option alors que c'est nul va lancer une exception d'exécution.if let y_val = y
dit que déclarer constant variable avec le nomy_val
qui est Implicitement Déballé en Option de type", puis prendre l'option valeur dey
déballer et de les assigner ày_val
. S'il vous plaît laissez-moi savoir mon hypothèse est correcte, ou quelque chose que j'ai raté. BTW, Merci pour l'explication simplifiée.var mutableArray: [Int] = [Int]()
et puisprint("\(mutableArray.first)")
d'affichage zéro.