Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

?? operator in Swift

Tags:

ios

swift

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?

like image 352
avismara Avatar asked Jun 11 '15 05:06

avismara


People also ask

What are operators in Swift?

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 .


1 Answers

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 
like image 73
Amadan Avatar answered Sep 21 '22 05:09

Amadan