枚举
Equatable的原始值为时,将自动进行枚举
Equatable。在您的第一种情况下,假定原始值为
Int,但是如果您给它指定另一个特定类型(例如
UInt32或),它将有效
String。
但是,一旦添加了关联值,
Equatable就不会再发生这种自动符合性,因为您可以声明以下内容:
let littleNorth = CompassPoint.North(2)let bigNorth = CompassPoint.North(99999)
那些相等吗?Swift应该怎么知道?您必须通过声明
enumas
Equatable并实现
==运算符来告诉它:
enum CompassPoint : Equatable { case North(Int) case South case East case West}public func ==(lhs:CompassPoint, rhs:CompassPoint) -> Bool { switch (lhs, rhs) { case (.North(let lhsNum), .North(let rhsNum)): return lhsNum == rhsNum case (.South, .South): return true case (.East, .East): return true case (.West, .West): return true default: return false }}
现在,您可以测试是否相等或不平等,如下所示:
let otherNorth = CompassPoint.North(2)println(littleNorth == bigNorth) // falseprintln(littleNorth == otherNorth) // true
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)