如果枚举值具有关联的值,则测试会失败?

如果枚举值具有关联的值,则测试会失败?,第1张

如果枚举值具有关联的值,则测试会失败?

枚举

Equatable
的原始值为时,将自动进行枚举
Equatable
。在您的第一种情况下,假定原始值为
Int
,但是如果您给它指定另一个特定类型(例如
UInt32
或),它将有效
String

但是,一旦添加了关联值,

Equatable
就不会再发生这种自动符合性,因为您可以声明以下内容:

let littleNorth = CompassPoint.North(2)let bigNorth = CompassPoint.North(99999)

那些相等吗?Swift应该怎么知道?您必须通过声明

enum
as
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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5622500.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存