我怎样才能像这样使用卫士:
guard let value = vm.value1 || let value = vm.value2 else { return }
我需要判断Value1,如果它有值,继续使用它,否则判断Value2,使用它,否则:退出.只有一个才能有价值.
我怎样才能像这样使用卫士:
guard let value = vm.value1 || let value = vm.value2 else { return }
我需要判断Value1,如果它有值,继续使用它,否则判断Value2,使用它,否则:退出.只有一个才能有价值.
您所描述的语义似乎是:
guard let value = vm.value1 ?? vm.value2 else { return }
如果vm.value1
不是nil,则value
将绑定到它的值,并且将执行guard
语句之后的代码.
否则,如果vm.value2
不是nil,则value
将绑定到它的值,并且将执行guard
语句之后的代码.
否则,return
人将被执行.
同样,可以使用多个let
来实现类似于逻辑"AND"的语义:
guard let value1 = vm.value1, let value2 = vm.value2 else { return }
仅当vm.value1
不为nil、and vm.value2
不为nil且value1
和value2
绑定到相应的值时,才执行guard
语句后的代码.
还请注意,您也可以将任意布尔条件与let
个绑定混合在一起:
guard let value = vm.value1, someBool || someOtherBool else { return }