我如何使用guard let:
guard let value = vm.value1 || let value = vm.value2 else { return }
Run Code Online (Sandbox Code Playgroud)
我需要检查 value1,如果它有值,则继续使用它,否则检查 value2 并使用它,否则:退出。只有一个人才能有价值。
您描述的语义似乎是:
guard let value = vm.value1 ?? vm.value2 else { return }
Run Code Online (Sandbox Code Playgroud)
如果vm.value1不为 nil,value则将与其值绑定,并guard执行该语句后面的代码。
否则,如果vm.value2不为 nil,value则将与其值绑定,并guard执行该语句后面的代码。
否则,return就会被处决。
类似地,可以使用多个lets 来实现类似于逻辑“AND”的语义:
guard let value1 = vm.value1, let value2 = vm.value2 else { return }
Run Code Online (Sandbox Code Playgroud)
该guard语句后面的代码只有在vm.value1is not nil 时才会执行,并且 vm.value2is not nil,并且value1和value2绑定到相应的值。
另请注意,您也可以将任意布尔条件与let绑定混合使用:
guard let value = vm.value1, someBool || someOtherBool else { return }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
731 次 |
| 最近记录: |