swift - 比较 Swift 枚举而不考虑关联值

标签 swift enums swift2

无论关联值如何,是否有可能以某种方式测试枚举案例?

enum Abc {
    case A(a:Int)
    case B(b:Int)
}

let a = Abc.A(a:1)

a == Abc.A  // <= Not possible 

最佳答案

当然,您可以在 switch 中执行此操作:

switch a {
case .A:
    print("it's A")
default:
    print("it's not A")
}

或者在 if 语句中使用模式匹配:

if case .A = a {
    print("it's A")
} else {
    print("it's not A")
}

如果匹配大小写后你仍然对关联的值感兴趣,你可以像这样提取它:

switch a {
case .A(let value):
    ...
}

if case .A(let value) = a {
    ...
}

备注@overactor's comment below您也可以将其写为 case let .A(value) – 这主要是个人喜好问题。

关于swift - 比较 Swift 枚举而不考虑关联值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37808161/

相关文章:

swift - 从 Spritekit 中的多个 block 创建一个 "smooth"平面

objective-c - 从 Swift 中的非泛型函数调用泛型函数

swift - 枚举类的初始化和将TemperatureUnit.Kelvin分配给self(self = .Kelvin)的困惑

swift - 如何使用带有类型别名的协议(protocol)作为函数参数?

ios - UIAlertcontroller 设置属性消息

ios - 如何调整 UICollectionView 单元格的大小以适合其中的内容?

c++ - 枚举类的 static_cast 的时间复杂度

c# - 标记项目过多的枚举;最后一个值太大。我该如何解决这个问题?

arrays - 如何在 Swift 中比较两个协议(protocol)数组是否相等?

sprite-kit - SpriteKit。是否可以在不缩放childNode的情况下缩放parentNode?