带布尔表达的链条防护案例测试



我正在尝试'布尔值或'守卫案例语句,但我不确定正确的语法。

enum FooBar {
  case foo
  case bar
  case nope
}
let test = FooBar.foo
guard case test = FooBar.foo else {
  return
}

我也想测试反对bar,但以下语法是不正确的:

guard case test = FooBar.foo || case test = FooBar.bar else {
  return
}

您不需要case关键字。只需检查枚举是否等于给定的情况

guard test == .foo || test == .bar else {
    return
}

您可以改用:

guard [FooBar.foo, FooBar.bar].contains(test) else {
    return
}

不需要使用guard case,因为您不使用任何复杂的模式匹配,所以您只是在测试平等。

您可以简单地将所有enum案例放入数组中,然后在此上调用contains

guard [FooBar.foo, FooBar.bar].contains(test) else {
    return
}

您可以使用contains

guard [FooBar.foo, FooBar.bar].contains(test) else { return }

最新更新