嗨,我正在尝试使用 Apples Fundamentals of Swift 书来学习 Swift。过去有过类似的帖子,但我对答案有一些问题,我想澄清一下。
该帖子是功能和选项练习
我在这个练习中,你应该打印返回值。如果商品的库存为 0,则返回值为 nil,如果库存不为 0,则返回值为 nil。补充一点,我认为关键是如果您返回它而不是 nil,则解开价格值。在早期的练习中,他们让我们解开选项。
var prices = ["Chips": 2.99, "Donuts": 1.89, "Juice": 3.99, "Apple": 0.50, "Banana": 0.25, "Broccoli": 0.99]
var stock = ["Chips": 4, "Donuts": 0, "Juice": 12, "Apple": 6, "Banana": 6, "Broccoli": 3]
var prices = ["Chips": 2.99, "Donuts": 1.89, "Juice": 3.99, "Apple": 0.50, "Banana": 0.25, "Broccoli": 0.99]
var stock = ["Chips": 4, "Donuts": 0, "Juice": 12, "Apple": 6, "Banana": 6, "Broccoli": 3]
func purchase(item: String) -> Double? {
stock[item]! == 0 ? nil : prices[item]
}
print(purchase(item: "Chips"))
如果我 print(purchases(item: "Chips") 我会打印 optional(2.99)。如果它被打开,它不会只是 2.99 吗?我可以在调用函数并强制打开时作弊,但这会破坏重点。
当我尝试安全地打开包装时,我收到一条消息,提示“在预期返回 'Double 的函数中缺少返回?'”
如此:
var prices = ["Chips": 2.99, "Donuts": 1.89, "Juice": 3.99, "Apple": 0.50, "Banana": 0.25, "Broccoli": 0.99]
var stock = ["Chips": 4, "Donuts": 0, "Juice": 12, "Apple": 6, "Banana": 6, "Broccoli": 3]
func purchase(item: String) -> Double? {
if stock[item]! == 0 {
return nil
} else {
if let itemPrice = prices[item] {
return itemPrice
}
}
}
我可以在 if let 语句之后添加另一个 else return nil ,但是我又回到了包装的可选项。
感谢您的任何回答