2017-01-03 6 views
-4

Ich habe eine Frage über 'if Let' Aussage im Zusammenhang mit Optionals.wenn let-Anweisung und optionals in swift

Im Grunde, dachte ich, dass, wenn Anweisung funktioniert wie diese 'if (true) {(diese Anweisung wird ausgeführt)} if (false) {(diese Anweisung wird nicht ausgeführt)}

aber in der' Wenn es eine Aussage gibt, funktioniert es nicht wie oben. Hier

ist der Code:

var isDeleted: Bool? 
isDeleted = false 
if let deleted = isDeleted { print(deleted) } 

in obigem Code, vielleicht wissen Sie, dass '= isDeleted gelöscht lassen' Rückkehr 'false' aber, 'print (gestrichen)' erfolgreich ausgeführt Weiß jemand, Warum?

+2

Diese Frage und ähnliche Fragen wurden zuvor gestellt, werfen Sie einen Blick [hier] (http://stackoverflow.com/questions/25828301/how-is-swift-if-let-evaluated) zum Beispiel – milo526

+2

'wenn lassen 'kümmert sich nicht um den * tatsächlichen * Wert des boolean, es interessiert nur, ob das optionale einen Wert hat oder 'nil' ist. – luk2302

+0

@ milo526 thx für Ihren Link, aber ich möchte Basiswissen über dieses Konzept wissen. Ich wusste von optionalen Bindungen. Überschreibt optionale Bindung die Standardfunktion der 'if' Anweisung? –

Antwort

2

Ihre erste Zeile deklariert einen optionalen booleschen Wert. Das hat keinen Wert. Die nächste Zeile setzt isDeleted, den optionalen boolean, auf false.

Ich denke, was Sie verwirrt ist, was die if let-Anweisung tut.

Betrachten Sie es als eine sichere lassen Aussage.

Betrachten Sie diese Codezeile:

let deleted = isDeleted 

Wenn Sie diesen Code in einem Ort Ihrer wenn sie Anweisung verwendet, wäre es ganz gut laufen. Aber wenn Sie isDeleted nie initialisiert haben, stürzt Ihre App ab.

In fortgeschritteneren Szenarien, können Sie nicht wissen, ob der Wert initialisiert wurde, und das ist, wo die, wenn eingelassene kommt.

Wenn kein Fehler mit der let-Anweisung ist, dann wird der Code innerhalb der Klammern wird ausgeführt werden, und eine temporäre Variable (in diesem Fall "gelöscht") wird deklariert und initialisiert.

Wenn ein Fehler auftritt, stürzt Ihre App nicht ab und der Code innerhalb der Klammern wird nicht ausgeführt.

Hoffe, das hilft.

Verwandte Themen