// 定義錯(cuò)誤,用來表示數(shù)組訪問錯(cuò)誤
enum ShoppingError:Error{ ?
? ? caseGoodsNotExist(String) ?
? ? caseGoodsNotEnough(String)
? ? casepayNotEnough(String)
}
classShopping { ?
? ? vargoodsList = ["可口可樂":(price:3.0,number:100),
?? ? ? ? ? ? ? ? ? ? "百事薯片":(price:8.0,number:200),
?? ? ? ? ? ? ? ? ? ? "士力架":(price:6.0,number:300),
? ? ? ? "阿爾卑斯":(price:3.0,number:200),
? ? ? ? "肉粒多":(price:28.0,number:700),
? ? ]
?funcbuyGoods(name:String,num:Int,pay:Double)throws->Void{
? ? ? ? guardletgoods =goodsList[name]else{
? ? ? ? ? ? throwShoppingError.GoodsNotExist("商品不存在")
? ? ? ? }
? ? ? ? guardgoods.number >= numelse{
? ? ? ? ? ? throwShoppingError.GoodsNotEnough("庫存不足")
? ? ? ? }
? ? ? ? guardpay >= (goods.price *Double(num))? else{
? ? ? ? ? ? throwShoppingError.payNotEnough("金額不足")
? ? ? ? }
? ? ? ? letleftMemoey = pay - goods.price *Double(num)
? ? ? ? // 打印清單
? ? ? ? print("\(name)? \(goods.price)? \(num)? \(leftMemoey)")
? ? }
}
var s = Shopping()
do{
? ? trys.buyGoods(name:"可口可樂", num:10, pay:1)
}catchShoppingError.GoodsNotExist{
? ? print("商品不存在")
}catchShoppingError.GoodsNotEnough{
? ? print("庫存不足")
}catchShoppingError.payNotEnough{
? ? print("金融不足")
}