Jak*_*ake 2 cocoa-touch function swift
我不明白为什么你不能在返回函数内部有一个守护声明.
func sayHello(text: String?) -> String {
guard let whatever = text else {
...
return
}
return "aString"
}
Run Code Online (Sandbox Code Playgroud)
为什么以上不正确?Xcode return在guard闭包语句中给出了错误"非void函数应该返回一个值" ,就像它认为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
}
})
}
Run Code Online (Sandbox Code Playgroud)
Xcode认为我试图让一个void完成处理程序返回一个Bool,而我希望函数Bool根据完成处理程序的结果返回一个.
我想我明白为什么你不能在完成处理程序示例中执行此操作,但是您应该能够在非void函数中包含一个guard语句.我尝试替换return(在guard示例中)break和continue,两者都没有.
谢谢!
pbu*_*h25 12
这里的重点是......你不能在执行完成处理程序内部返回.在第二种情况下,如果要返回关于完成处理程序结果的布尔值,则必须创建一个局部变量,将其设置在处理程序的结果中,然后将其返回到处理程序之外.至于你面临的第一个问题,Xcode抱怨是因为你已经声明函数返回一个字符串,但是在你的else语句中你试图返回void,这违反了函数的返回类型.你可以做你想做的事,但你必须至少返回一个空字符串.
| 归档时间: |
|
| 查看次数: |
4706 次 |
| 最近记录: |