案例条件表达式有几种类型

时间:2019-06-21 00:58:50

标签: swift

这是代码

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类型?还有另一种方法吗?

1 个答案:

答案 0 :(得分:0)

由于您想保留==运算符,而在第三个示例中没有if case,因此下面是解决方法。


我添加了Equatable一致性

enum Foo: Equatable { *** }

然后我在下面添加了(p: "foo")

if f1 == Foo.koo(p: "1") {
   // This is true!
}