此行不会给我任何错误:
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:Optional)' )
答案 0 :(得分:1)
我认为在第二个代码中你将两个返回包装在" IF"它假定可能存在一种情况都不是真的,因此根本不会有任何回报。
答案 1 :(得分:0)
我想到的唯一可能的原因是获取此错误消息是因为您的程序流程。
在第一种情况下,它总是根据此pendingBinaryOperation != nil && accumulator != nil
的值返回一些内容。
然而,在第二种情况下,pendingBinaryOperation != nil && accumulator != nil
错误且accumulator!.digit != nil
错误的程序流程,您的代码无法返回某些内容所以它提供了错误消息。
答案 2 :(得分:0)
第二段代码中有一些未解决的条件。
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
。没有提供退货。这是两个没有回报的情景。
答案 3 :(得分:0)
发生错误是因为第二个表达式并非详尽无遗。
如果第一和第二条件都被评估为false
,则没有返回值。这就是错误消息所说的。
您需要额外的else
分支
if .... {
return ...
} else if ... {
return ...
} else {
return ...
}
最后或return
语句
if .... {
return ...
} else if ... {
return ...
}
return ...