请查看下面的switch语句。我正在寻找一种更加快速的方式来进行测试;类似的东西:
case let .b(other) where .x = other // This does not compile
有可能吗?
enum MyEnum {
case a
case b(MyOtherEnum)
}
enum MyOtherEnum {
case x
case y
}
func check(value: MyEnum) {
switch value {
case let .b(other):
if case .x = other {
print("Got it!")
}
default:
break
}
}
答案 0 :(得分:2)
如果您只对案例MyEnum.b(.x)
感兴趣而不感兴趣
然后你也可以if
使用case
模式:
func check(value: MyEnum) {
if case .b(.x) = value {
print("Got it!")
}
}
答案 1 :(得分:1)
您需要使用==
而不是=
:
case let .b(other) where .x == other
这对我来说很好用:
func check(value: MyEnum) {
switch value {
case let .b(other) where other == .x:
print("bx")
case let .b(other) where other == .y:
print("by")
default:
break
}
}
check(value: MyEnum.b(.x)) // prints "bx"
check(value: MyEnum.b(.y)) // prints "by"
答案 2 :(得分:1)
func check(value: MyEnum) {
switch value {
case .b(.x):
print("Got it!")
case .b(_):
print("Not it!")
default:
break
}
}
let myVar = MyEnum.b(.x)
check(value: myVar)
// prints "Got it!"