【发布时间】:2015-12-08 06:08:12
【问题描述】:
我不明白为什么在返回函数中不能有一个保护语句。
func sayHello(text: String?) -> String {
guard let whatever = text else {
...
return
}
return "aString"
}
为什么上面的不正确? Xcode 在guard 闭包中的return 语句上给我错误“非空函数应该返回一个值”,就像它认为return 语句是函数的return 语句一样。如何区分 guard 的 return 语句和函数的 return 语句?
同样的事情发生在不返回的完成处理程序中:
func anotherFunction() -> Bool {
aFunction("hello", completion: { (status) -> Void in
if status == "good" {
return true // I want anotherFunction() to return this not the handler
} else {
return false
}
})
}
Xcode 认为我试图让一个 void 完成处理程序返回一个 Bool,而不是我希望函数根据完成处理程序的结果返回一个 Bool。
我想我理解为什么你不能在完成处理程序示例中这样做,但你绝对应该能够在非 void 函数中使用保护语句。我尝试用break 和continue 替换return(在guard 示例中),但都不起作用。
谢谢!
【问题讨论】:
标签: swift function cocoa-touch