【问题标题】:Swift return error that goes against what the Apple developer site saysSwift 返回错误,这与 Apple 开发者网站所说的不符
【发布时间】:2015-11-25 23:07:46
【问题描述】:
func evaluateDate(nDate: Int!, rDate: Int!) -> Int{
    if(nDate < rDate) {
        return 1
    }
    if(nDate == rDate) {
        return 2
    }
    if(nDate > rDate) {
        return 3
    }
}

每次我收到一条错误消息:“预期返回 'Int' 的函数中缺少返回值” 但是在苹果开发者网站上,他们举了一个这样做的例子

func sayHello(personName: String, alreadyGreeted: Bool) -> String {
   if alreadyGreeted {
      return sayHelloAgain(personName)
   } else {
      return sayHello(personName)

   }
}
print(sayHello("Tim", alreadyGreeted: true))
// prints "Hello again, Tim!"

我不明白发生了什么,因为我也在另一个地方尝试更改变量的值,但它无法识别变量在 if-else 块之外发生了更改,但是我不记得这一点是个问题。

【问题讨论】:

    标签: if-statement return swift2


    【解决方案1】:

    您的if statement 结构不正确。编译器抱怨是因为if 没有else 可以落入,随后func 在所有情况下都无法返回。

    func evaluateDate(nDate: Int!, rDate: Int!) -> Int {
        if (nDate < rDate) {
            return 1
        } else if (nDate == rDate) {
            return 2
        } else {
            return 3
        }
    }
    

    【讨论】:

      【解决方案2】:

      在 Apple 的示例中,您的代码将执行 if-branch 并返回,或者执行 else-branch 并返回。

      在您的代码中,有一个 if 并且您的代码可能会返回。如果它没有返回,那么还有另一个如果它可能返回。另一个如果它可能会返回。那么如果在第三个之后会发生什么?

      对你来说可能很明显,第三个 if 分支将被输入并返回。这对编译器来说并不明显。 对你来说也不是很明显,因为否则你根本不会写 if,而只是“返回 3”。

      【讨论】:

        猜你喜欢
        • 2012-06-22
        • 1970-01-01
        • 1970-01-01
        • 2020-09-16
        • 2020-05-27
        • 2014-08-14
        • 2019-10-13
        • 1970-01-01
        • 2011-10-26
        相关资源
        最近更新 更多