标签:意思 error: item end erro cas not pen inventory
import UIKit enum VendingMachineError: Error { case invalidSelection //选择无效 case insufficientFunds(coinsNeeded: Int) //金额不足 case outOfStock //缺货 } 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 let 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 var newItem = item newItem.count -= 1 inventory[name] = newItem print("Dispensing \(name)") } } class First_Demo3: UIViewController { override func viewDidLoad() { super.viewDidLoad() self.navigationItem.title = "throws异常抛出" self.view.backgroundColor = UIColor.white let vend = VendingMachine() //货币沉淀 vend.coinsDeposited = 5 /* try抓取异常,如果执行成功,那么执行 vend.vend(itemNamed: "Pretzels")。cathch 完枚举的三个错误以后,要把catch关闭,即: 注意:最后加入一个空的catch,否则则会报错 Error throw from are not handled because the enclosing catch is not exhaustive 意思就是catch没有关闭。 */ do { try vend.vend(itemNamed: "Pretzels") // 没有错误抛出 }catch VendingMachineError.invalidSelection{ print("选择无效") // 有错误抛出 }catch VendingMachineError.outOfStock{ print("缺货") }catch VendingMachineError.insufficientFunds(let coinsNeeded){ print("还差\(coinsNeeded)货币") }catch { } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
标签:意思 error: item end erro cas not pen inventory
原文地址:http://www.cnblogs.com/sayimba/p/6237235.html