以下代码出现以下错误:Missing return in a function expected to return 'String'
var description: String {
get{
if(pending == nil){
return "a"
}
else{
if let op = internalProgram.last as? String{
if operations[op] != nil {
return "b"
}
}
else {
return "c"
}
}
}
}
但是,如果我删除了最后一个else
而只是离开return "c"
,那么它可以正常工作。
var description: String {
get{
if(pending == nil){
return "a"
}
else{
if let op = internalProgram.last as? String{
if operations[op] != nil {
return "b"
}
}
return "c"
}
}
}
为什么第一个代码没有工作?他们没有相同的功能吗?不会达到最后的回报声明吗?在第一个代码中,如果其他所有内容都不起作用,则会执行最后一个return语句。
答案 0 :(得分:1)
对于操作[op]为零的情况,您不会返回任何内容。
if let op = internalProgram.last as? String{
if operations[op] != nil {
return "b"
} else {
// return something else here....
}
答案 1 :(得分:0)
因为你错过了一个条件,如果operations[op] == nil
:
var description: String {
get{
if(pending == nil){
return "a"
}
else{
if let op = internalProgram.last as? String{
if operations[op] != nil {
return "b"
}
// what's the return value here?
}
else {
return "c"
}
}
}
}
另一方面,您可以缩短代码,使其对人类和机器更具可读性:
var description: String {
if pending == nil {
return "a"
} else if let op = internalProgram.last as? String, operations[op] != nil {
return "b"
} else {
return "c"
}
}