Swift开关默认+ fallthrough:在函数中返回缺少返回'String'的函数

时间:2015-12-18 13:16:18

标签: swift compiler-errors switch-statement

我有以下代码:

func messageForError(error: ApiErrorType)->String{
    switch (error){
    case .ApiError(let apiMessage):
        if let newMessage = apiMessage{
            return newMessage
        }
    case .NoInternetError:
        return "Não foi possível estabelecer conexão com o servidor. Você está conectado à internet?"

    case .RequestError:
        fallthrough
    default:
        return "Não se preocupe, já demitimos o estágiario. \nDeseja tentar novamente?"
    }
}

但编译器会打印以下错误:

在预期返回'String'的函数中缺少返回

交换机有一个默认,所以所有情况都被处理,我遗漏了什么或者Swift编译器不那么聪明?

如果我删除了这个漏洞,编译器确实编译没有任何错误:

    func messageForError(error: ApiErrorType)->String{
    switch (error){
    case .ApiError(let apiMessage):
        if let newMessage = apiMessage{
            return newMessage
        }
    case .NoInternetError:
        return "Não foi possível estabelecer conexão com o servidor. Você está conectado à internet?"
    default:
        return "Não se preocupe, já demitimos o estágiario. \nDeseja tentar novamente?"
    }
}

0 个答案:

没有答案