这一行不会给我任何错误:
if pendingBinaryOperation != nil && accumulator != nil {
return (accumulator!.digit, true, pendingBinaryOperation!.description(pendingBinaryOperation!.descriptionOperand, accumulator?.literalDescription ?? " "), accumulator?.errorMessage)
} else {
return (accumulator!.digit, false, calculationDescription ?? "", accumulator?.errorMessage)
}但这一行确实给了我一个错误:
if pendingBinaryOperation != nil && accumulator != nil {
return (accumulator!.digit, true, pendingBinaryOperation!.description(pendingBinaryOperation!.descriptionOperand, accumulator?.literalDescription ?? " "), accumulator?.errorMessage)
} else if accumulator!.digit != nil {
return (accumulator!.digit, false, calculationDescription ?? "", accumulator?.errorMessage)
}消息是:在期望返回的函数中缺少返回(结果: Double?,isPending: Bool,description: String,errorMessage: String?)(又名‘(结果:可选,isPending: Bool,description: String,errorMessage:可选)
发布于 2017-06-26 15:00:59
我认为,正如在第二段代码中一样,您将两个返回都封装在一个"IF“中,它假设可能存在这样一种情况,即它们都不是真的,因此您将根本没有任何返回。
发布于 2017-06-26 15:13:32
在我看来,得到这个错误消息的唯一可能原因是因为您的程序流。
在第一种情况下,它总是根据这个pendingBinaryOperation != nil && accumulator != nil的值返回一些东西。
但是,在第二种情况下,在这样的程序流中,pendingBinaryOperation != nil && accumulator != nil是False,而accumulator!.digit != nil是False,您的代码无法命中要返回的东西,因此它提供了这样一个错误消息。
发布于 2017-06-26 15:21:23
在第二段代码中有一些未解决的条件。
if pendingBinaryOperation != nil && accumulator != nil {
return (accumulator!.digit, true, pendingBinaryOperation!.description(pendingBinaryOperation!.descriptionOperand, accumulator?.literalDescription ?? " "), accumulator?.errorMessage)
} else if accumulator!.digit != nil {
return (accumulator!.digit, false, calculationDescription ?? "", accumulator?.errorMessage)
}这是你的密码。让我们先来看看accumulator和pendingBinaryOperation的可能场景:
accumulator != nil,pendingBinaryOperator != nil.执行第一个子句。accumulator != nil,pendingBinaryOperator == nil.执行第二子句。accumulator == nil,pendingBinaryOperator != nil || pendingBinaryOperator !== nil.不提供退货。这是两个没有返回的场景。
https://stackoverflow.com/questions/44762618
复制相似问题