这是代码
enum Foo {
case koo(p: String)
case joo
}
let f1 = Foo.koo(p: "1")
// Case 1
switch f1 {
case .koo(_):
break
default:
break
}
// Case 2
if case Foo.koo(_) = f1 {
}
// Case 3. Compile error: Binary operator '==' cannot be applied to operands of type 'Foo' and '(String) -> Foo'
if f1 == Foo.koo {
}
情况1和情况2通过。但是情况3会导致错误。因此,在这种情况下,是否只有案例1和案例2才能说明哪种Foo类型?还有另一种方法吗?
答案 0 :(得分:0)
由于您想保留==
运算符,而在第三个示例中没有if case
,因此下面是解决方法。
我添加了Equatable
一致性
enum Foo: Equatable { *** }
然后我在下面添加了(p: "foo")
if f1 == Foo.koo(p: "1") {
// This is true!
}