我有以下内容:
guard let _ = myfunction() else {
print("guard just executed")
return false
}
myfunction
返回false但是守卫内的代码没有被执行。是不是警卫应该执行的正确场景?
该功能定义为:
func myfunction() -> Bool?
但只返回true或false(不是选项)。
答案 0 :(得分:2)
guard let
用于包装可选值,以便在您的情况下guard let _ = myfunction() else {
始终返回true,如果您还要检查(比较)其值,则需要再添加一个条件{{ 1}}语句以这种方式由guard
分隔。
,
答案 1 :(得分:2)
let _ = myfunction()
的结果不是零, true
评估为myfunction()
,无论其返回Int?
,String?
,Bool?
,如果结果不是nil,则打开的Bool?
值是true
还是false
并不重要,就像{Int?
的展开值一样无关紧要guard let _ = myfunction() else {}
1}}是5,37或2089。
myfunction
的结果为零时,{{1}}才会进入保护状态。
答案 2 :(得分:1)
guard let
需要一个可选参数,如果你只需要检查一个布尔结果就有一个更简单的语法
guard myfunction() else { ...