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

时间:2019-02-25 16:55:12

标签: swift enums

我正在尝试“布尔值”或“后卫案例”语句,但不确定语法是否正确。

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
}

4 个答案:

答案 0 :(得分:2)

由于您没有使用任何复杂的模式匹配,因此无需使用guard case,您只需测试是否相等即可。

您可以简单地将所有enum的情况放入数组中,并在其上调用contains

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

答案 1 :(得分:1)

您可以改用它:

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

答案 2 :(得分:1)

您可以使用contains

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

答案 3 :(得分:1)

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

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