2017-07-31 3 views
-1

J'essaie de comprendre implicitement déballé optionnel dans swift, je suis confus concernant la deuxième variable comme dans l'image ci-dessous.Swift: Si la variable a est non-optionnelle alors pourquoi la variable b est-elle optionnelle?

please see image here

Pourquoi variable b est une option?

+0

Parce qu'il n'a pas de déclaration de type explicite et qu'il a la valeur d'un. Essayez de définir ': Int' comme type –

+0

@Hamish merci :) –

+1

S'il vous plaît envoyer * code, * pas d'images. –

Répondre

1

La variable b est une variable optionnelle car la variable 'pourrait' renvoyer zéro et dans ce cas b sera également nul.

Modifier: Vous avez affecté une variable facultative à une autre variable pour laquelle vous n'avez pas défini de type spécifique. Xcode vous sauve en créant la variable b en option. Considérez cet exemple:

var a: Int! = 6 
a = nil 
let b: Int = a 
print(b) 

semblable à la vôtre, est ici variable a une option de type Int et b est un nonoptional de type Int aussi. Ici, je définis spécifiquement b comme un entier non optionnel contrairement à votre variable b. Maintenant, si j'essaie d'imprimer la variable à qui est assignée la valeur d'un qui était à ce moment-là. Ceci est dangereux et entraîne simplement une erreur fatale dans l'instruction d'affectation. Le crash est simplement compris parce que le compilateur trouve une valeur nulle dans le type optionnel et essaye de l'assigner à un non optionnel. Seules les options peuvent contenir une valeur nulle. Lorsque vous attribuez une valeur optionnelle (non modifiable) à une autre variable b, elle est automatiquement traitée comme facultative car la valeur sur laquelle elle repose est modifiable et la variable b est également exploitable.

+0

comment il peut être possible qu'un pourrait être nul, c'est non-optionnel et les non-optionnels ne seront jamais nulles. Si possible, donnez un exemple. –

+0

espérons que l'édition aide .. – Rishabh

+0

Merci beaucoup, maintenant je l'ai eu. –