【发布时间】:2014-06-21 08:31:44
【问题描述】:
我想测试两个 Swift 枚举值的相等性。例如:
enum SimpleToken {
case Name(String)
case Number(Int)
}
let t1 = SimpleToken.Number(123)
let t2 = SimpleToken.Number(123)
XCTAssert(t1 == t2)
但是,编译器不会编译相等表达式:
error: could not find an overload for '==' that accepts the supplied arguments
XCTAssert(t1 == t2)
^~~~~~~~~~~~~~~~~~~
我是否已经定义了自己的等式运算符重载?我希望 Swift 编译器会自动处理它,就像 Scala 和 Ocaml 一样。
【问题讨论】:
-
打开 rdar://17408414 (openradar.me/radar?id=6404186140835840)。
-
由于SE-0185,从Swift 4.1 开始,Swift 还支持为具有关联值的枚举合成
Equatable和Hashable。
标签: swift