?? Betreiber in Swift
In der "the Swift Programming Language" Buch (Seite 599), stieß ich auf diesen code-Schnipsel irgendwie verwirrt mich. Es ging wie folgt:
func buyFavoriteSnack(person:String) throws {
let snackName = favoriteSnacks[person] ?? "Candy Bar"
try vend(itemName:snackName)
}
Seine Erklärung war:
Den buyFavoriteSnack(_:) die Funktion sucht die person Lieblings-snack und versucht, es zu kaufen für Sie. Wenn Sie don ' T haben eine Lieblings-snack aufgeführt, es versucht zu kaufen ein Schokoriegel. Wenn Sie...
Wie kann diese Erklärung anzeigen zu den "??" operator im code gegeben. Wann sollen/können wir diese syntax verwenden in unseren eigenen code?
- Es ist ein "The Swift Programming Language" iBook, und suchen Sie die "??" in iBooks. Der erste Treffer ist die "Null Coalescing Operator" Kapitel ...
- Ja, ja, ich es verpasst. Passiert den besten von uns.
- Es könnte helfen, auszusprechen
??
als "anders", wenn Sie Lesen, code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es "null coalescing operator" (auch als "Standard-operator").
a ?? b
der Werta
(d.h.a!
), es sei denna
istnil
, in welchem Fall es ergibtb
. I. e. wennfavouriteSnacks[person]
fehlt, zurück zuweisen"Candy Bar"
an Ihre Stelle.BEARBEITEN
Technisch kann interpretiert werden als: (Von Badar Al-Rasheed ' s Antwort weiter unten)
a
ist nicht-null, der Wert derb
wird nicht ausgewertet. Dies ist bekannt als short-circuit-evaluation.a
ist nicht ausgepackt, als ein Teil von Ihr. Aberb
hat ein keines optional oder implizit unwrapped optional variable.a ?? b
) packt eine optionalea
wenn es einen Wert enthält, oder gibt einen default-Wertb
wenna
istnil
".bedeutet
Diese:
Ist gleich diesem:
Erklären, in Worten, wenn die
let
Aussage fehl zu greifenperson
ausfavoriteSnacks
es wird zugeordnet, Candy Bar, um diesnackName
Nil-coalescing-operator
a ?? b
ist eine Abkürzung füra != nil ? a! : b
Einer Ergänzung zu @Icaro Antwort Sie können erklären, Werte ohne initialisieren. Meiner Meinung nach ist das besser: