我是 Swift 的新手。有人可以告诉我什么“??”代表什么,它在上下文中的作用是什么
let snackName = favoriteSnacks[person] ?? "Candy bar"
我在下面包含了完整的代码:
struct Item{
var price: Int
var count: Int
}
class VendingMachine {
var inventory = [
"Candy bar": Item(price: 12, count: 7),
"Chips": Item(price: 10, count: 4),
"Pretzels": Item(price: 7, count: 11)
]
var coinsDeposited = 0
func dispenseSnack(snack: String){
print("dispensing \(snack)")
}
func vend(itemNamed name: String) throws {
guard var item = inventory[name] else {
throw VendingMachineError.InvalidSelection
}
guard item.count > 0 else {
throw VendingMachineError.OutOfStock
}
guard item.price <= coinsDeposited else {
throw VendingMachineError.InsufficientFunds(coinsNeeded: item.price - coinsDeposited)
}
coinsDeposited -= item.price
--item.count
inventory[name] = item
dispenseSnack(name)
}
}
let favoriteSnacks = [
"Alice": "Chips",
"Bob": "Licorice",
"Eve": "Pretzels",
]
func buyFavoriteSnack(person: String, vendingMachine: VendingMachine) throws {
let snackName = favoriteSnacks[person] ?? "Candy bar"
try vendingMachine.vend(itemNamed: snackName)
}
最佳答案
用于校验nil,如果你的值为nil,则赋默认值。
let favoriteSnacks = [
"Alice": "Chips",
"Bob": "Licorice",
"Eve": "Pretzels",
]
从你的代码,
suppose person = "Eve"
let snackName = favoriteSnacks["Eve"] ?? "Candy bar"
它将首先尝试从字典中查找值,即 favoriteSnacks["Eve"]
将为您提供值 "Pretzels"
。
因此它将值 Pretzels
赋给 snackName
变量。
suppose person = "Allen"
let snackName = favoriteSnacks["Allen"] ?? "Candy bar"
它将首先尝试从字典中查找值,即 favoriteSnacks["Allen"]
将为您提供值 nil
。
在这种情况下,它会将默认值 "Candy bar"
分配给您的变量 snackName
。
关于swift - "??"在 : let x = y ? 的上下文中代表什么? "Candy bar",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35331397/