当函数中的返回值是可选的时,我是否必须声明“ return nil”语句?

时间:2018-07-30 10:26:12

标签: swift return optional return-type

例如,我有以下代码:

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,那为什么呢?

谢谢!

1 个答案:

答案 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 ;如果具有该键,则返回