一尘不染

?? Swift中的运算符

swift

在“ Swift编程语言”一书(第599页)中,我遇到了使我感到困惑的这段代码。它是这样的:

func buyFavoriteSnack(person:String) throws {
    let snackName = favoriteSnacks[person] ?? "Candy Bar"
    try vend(itemName:snackName)
}

其解释是:

buyFavoriteSnack(_ :)函数查找给定人员的最爱小吃,并尝试为他们购买。如果他们没有列出最喜欢的小吃,它会尝试购买糖果。如果他们…

该解释如何映射到“ ??” 给定代码中的运算符。我们何时/应该在自己的代码中使用此语法?


阅读 221

收藏
2020-07-07

共1个答案

一尘不染

它是“零合并运算符”(也称为“默认运算符”)。a ?? ba(即a!)的值,除非anil,在这种情况下会产生b。即如果favouriteSnacks[person]丢失,则代之以分配"Candy Bar"

*从技术上讲, *编辑 可以解释为:(来自下面的Badar Al-Rasheed的回答)

let something = a != nil ? a! : b
2020-07-07