Swift 是否可以使用if来比较包含参数的枚举?

Swift 是否可以使用if来比较包含参数的枚举?,swift,Swift,例如,我使用如下参数来删除枚举 enum Foo { case a(Int) } let f = Foo.a(10) switch f { case let .a(k): print(k) } 然后我可以将这个枚举与下面的哪个子句进行比较 enum Foo { case a(Int) } let f = Foo.a(10) switch f { case let .a(k): print(k) } 我的问题是 是否可以

例如,我使用如下参数来删除枚举

enum Foo {        
    case a(Int)
}
let f = Foo.a(10)

switch f {
case let .a(k):
    print(k)
}
然后我可以将这个枚举与下面的哪个子句进行比较

enum Foo {        
    case a(Int)
}
let f = Foo.a(10)

switch f {
case let .a(k):
    print(k)
}

我的问题是 是否可以将此类型的枚举与if语句进行比较

比如说

if f == .a(_) {
    print("yes")
}

我找到了这样的解决方案:

if case .a(let k) = f {
    print(k)
}

我找到了这样的解决方案:

if case .a(let k) = f {
    print(k)
}

你可以,如果你让foo符合equalable

enum Foo: Equatable {
    case a(Int)
}
然后

// will print "no"
let f = Foo.a(10)
if f == .a(2) {
    print("yes")
} else {
    print("no")
}

你可以,如果你让foo符合equalable

enum Foo: Equatable {
    case a(Int)
}
然后

// will print "no"
let f = Foo.a(10)
if f == .a(2) {
    print("yes")
} else {
    print("no")
}

是的。在您已经编写的
开关
语句上方至少有两个选项

  • a。使用
    equalable
  • b<代码>如果案例
使用
equalable
使您的
枚举
相等
,并使用
=
。在您的情况下,您不必编写任何代码,除了:

enum Foo:equalable{
案例a(内部)
}
如果f=.a(10){
打印(“是”)
}
如果案例 如果您不这样做,您将不会或无法轻松地使您的类型
相等
,您可以始终使用
If case

如果case.a=f{
打印(“是”)
}
如果情况a(设x)=f,x==10{
打印(“是”)
}
如果您希望捕获值以在
if
分支中使用它,而不必检查它以进行等式检查,那么第二个示例也很方便

如果情况a(设x)=f{
打印(x)
}

是的,是的。在您已经编写的
开关
语句上方至少有两个选项

  • a。使用
    equalable
  • b<代码>如果案例
使用
equalable
使您的
枚举
相等
,并使用
=
。在您的情况下,您不必编写任何代码,除了:

enum Foo:equalable{
案例a(内部)
}
如果f=.a(10){
打印(“是”)
}
如果案例 如果您不这样做,您将不会或无法轻松地使您的类型
相等
,您可以始终使用
If case

如果case.a=f{
打印(“是”)
}
如果情况a(设x)=f,x==10{
打印(“是”)
}
如果您希望捕获值以在
if
分支中使用它,而不必检查它以进行等式检查,那么第二个示例也很方便

如果情况a(设x)=f{
打印(x)
}

或者如果case let.a(k)=f
请注意,如果您有多个关联的值,并且所有值都是常量,或者如果case let.a(k),则这非常方便=f请注意,如果您有多个关联值,并且所有值都是cConstants,则此操作非常方便。这称为关联值枚举。这称为关联值枚举