在“ Swift编程语言”一书(第599页)中,我遇到了使我感到困惑的这段代码。它是这样的:
func buyFavoriteSnack(person:String) throws { let snackName = favoriteSnacks[person] ?? "Candy Bar" try vend(itemName:snackName) }
其解释是:
buyFavoriteSnack(_ :)函数查找给定人员的最爱小吃,并尝试为他们购买。如果他们没有列出最喜欢的小吃,它会尝试购买糖果。如果他们…
该解释如何映射到“ ??” 给定代码中的运算符。我们何时/应该在自己的代码中使用此语法?
它是“零合并运算符”(也称为“默认运算符”)。a ?? b是a(即a!)的值,除非a是nil,在这种情况下会产生b。即如果favouriteSnacks[person]丢失,则代之以分配"Candy Bar"。
a ?? b
a
a!
nil
b
favouriteSnacks[person]
"Candy Bar"
*从技术上讲, *编辑 可以解释为:(来自下面的Badar Al-Rasheed的回答)
let something = a != nil ? a! : b