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,则此操作非常方便。这称为关联值枚举。这称为关联值枚举