例如,我有以下代码:
var meals: [String: Meal] = ["Breakfast": Meal(food: ["Bagel", "Orange Juice", "Egg Whites"], calories: 530)]
func logging (mealTime: String) -> Meal? {
if let a = meals[mealTime] {
return a
} else {
return nil
}
}
如果我的返回值已经是可选的,我是否需要声明“ return nil”?因为此练习的解决方案是这样的:
func logging(mealTime: String) -> Meal? {
return meals[mealTime]
}
如果我不必添加return nil,那为什么呢?
谢谢!
答案 0 :(得分:1)
只需要澄清一下:
参数:
mealTime: String
此字符串可能是字典中的键。
功能(它的工作方式):此功能要检查此键是否存在,如果存在,则返回值(即Meal对象)。
您做了什么?
if let a = meals[mealTime] {
return a
} else {
return nil
}
您正在检查(如果允许)带有该字符串键的值,并将该值分配给常数(a)。最终,您返回了该值。如果数组中没有该键的值,则返回nil。
由于此函数返回了“可选餐”,因此您可以跳过检查是否存在该选项,这就是正确答案是正确的原因:
func logging(mealTime: String) -> Meal? {
return meals[mealTime]
}
如果该键没有值,则此函数返回 nil ;如果具有该键,则返回值。