In the "The Swift Programming Language" book (page 599), I came across this code snippet that kind of confused me. It went like this:
func buyFavoriteSnack(person:String) throws { let snackName = favoriteSnacks[person] ?? "Candy Bar" try vend(itemName:snackName) }
Its explanation was:
The buyFavoriteSnack(_:) function looks up the given person's favorite snack and tries to buy it for them. If they don't have a favorite snack listed, it tries to buy a candy bar. If they...
How can this explanation map to the "??" operator in the code given. When should/can we use this syntax in our own code?
An operator is a special symbol or phrase that you use to check, change, or combine values. For example, the addition operator ( + ) adds two numbers, as in let i = 1 + 2 , and the logical AND operator ( && ) combines two Boolean values, as in if enteredDoorCode && passedRetinaScan .
It is "nil coalescing operator" (also called "default operator"). a ?? b
is value of a
(i.e. a!
), unless a
is nil
, in which case it yields b
. I.e. if favouriteSnacks[person]
is missing, return assign "Candy Bar"
in its stead.
EDIT Technically can be interpreted as: (From Badar Al-Rasheed's Answer below)
let something = a != nil ? a! : b
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With