Я новичок в Swift. Может кто-нибудь, пожалуйста, скажите мне, что "??" означает и какова его функция в контекстеЧто такое "??" стоять в контексте: пусть x = y ?? «Candy bar»
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/ - и найдите «быстрые операторы»; этот «трюк» поиска работает практически для любого языка. Выделив тип символа («оператор»), а затем используя локализованный (на странице) поиск .. – user2864740
он называется нильским коалесцирующим оператором –