我是新來的斯威夫特。有人能告訴我什麼是「??」代表,什麼是它在什麼「??」在上下文中代表:let x = y ?? 「糖果吧」
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)
}
這是一個默認值,如果沒有收藏夾 –
請參閱http://nshipster.com/swift-operators/並搜索「swift operators」;這種搜索「技巧」適用於任何語言。通過隔離符號的類型(「運營商」),然後使用本地化(在頁面中)搜索.. – user2864740
它被稱爲nil合併運算符 –