讨论

enum VendingMachineError: ErrorType { case InvalidSelection //选择无效 case InsufficientFunds(coinsNeeded: Int) //金额不足 case OutOfStock //缺货 }
ErrorType 已经修改为 Error

dispenseSnack(name)
在Xcode8中需要编写成
dispenseSnak(snack: name)

var vendingMachine = VendingMachine() vendingMachine.coinsDeposited = 8 do { try buyFavoriteSnack("Alice", vendingMachine: vendingMachine) } catch VendingMachineError.InvalidSelection { print("Invalid Selection.") } catch VendingMachineError.OutOfStock { print("Out of Stock.") } catch VendingMachineError.InsufficientFunds(let coinsNeeded) { print("Insufficient funds. Please insert an additional \(coinsNeeded) coins.") } // 打印 “Insufficient funds. Please insert an additional 2 coins.”
这个举例在Xcode8编译不过,应该为
func testError() {
let vendingMachine = VendingMachine()
vendingMachine.coinsDeposited = 8
do {
try buyFavoriteSnack(person: "Alice", vendingMachine: vendingMachine)
} catch VendingMachineError.InvalidSelection {
print("Invalid Selection")
} catch VendingMachineError.OutOfStock {
print("Out of stock")
} catch VendingMachineError.InsufficientFunds(let coinsNeeded) {
print("Insufficient funds. Please insert an additional \(coinsNeeded) coins")
} catch {
}
}