在下面的代码中,我练习使用GUARD(书:OReilly Learning Swift)
Android Studio
为什么我会收到以下代码错误?
WebView
或GUARD仅在函数中使用?
答案 0 :(得分:3)
如果未满足guard
语句中的条件,则else分支必须退出当前范围。 return
只能在函数内部使用,如错误消息所示,但return
不是退出范围的唯一方法。
您也可以使用throw
外部函数,如果guard
语句处于循环中,您还可以使用break
或continue
。
return
在函数中有效:
func testGuard(){
guard 2+2 == 4 else {
print("The universe makes no sense")
return // this is mandatory!
}
print("We can continue with our daily lives")
}
throw
在函数之外也有效:
guard 2+2 == 4 else { throw NSError() }
break
在循环中有效:
for i in 1..<5 {
guard i < 5 else {
break
}
}
答案 1 :(得分:3)
或GUARD仅在函数中使用?
不一定。
如果不满足该条件,则执行
else
分支内的代码。 该分支必须转移控制以退出guard
语句出现的代码块。它可以通过控件转移语句执行此操作,例如return
,break
,continue
或throw
,或者它可以调用不返回的函数或方法,例如fatalError(_:file:line:)
。
例如,这可以在顶级的Playgound中使用
for i in 0...10 {
guard i % 2 == 0 else { continue }
print(i)
}
错误消息实际上与guard
无关。它只是声明 return
不能在函数之外使用