gpt4 book ai didi

swift - 是否可以将 Enum 值与 'if' 语句进行比较?

转载 作者:行者123 更新时间:2023-11-28 10:40:13 25 4
gpt4 key购买 nike

我创建了一个枚举类型(Swift 4.0):

enum TraceResult{
case nothing
case success
case failed
case custom(String) //#1
}

之后我决定比较两个枚举值:

let tr = TraceResult.nothing
if tr == TraceResult.success{ //#2
//do something...
}

编译器会在第 2 行报错:

Binary operator '==' cannot be applied to two 'TraceResult' operands

如果我删除第 1 行,就没问题了!!!

或者我用'switch'语句来比较,也可以!!!

那么可以用“if”语句比较两个 TraceResult 值吗???

谢谢;)

最佳答案

您需要声明您的类型符合 Equatable:

enum TraceResult: Equatable {
case nothing
case success
case failed
case custom(String)
}

从 Swift 4.1 开始,编译器会自动为您合成 == 函数的定义。在 4.1 之前,您需要手动实现,如下所示:

extension TraceResult: Equatable {
static func == (lhs: TraceResult, rhs: TraceResult) -> Bool {
switch (lhs, rhs) {
case (.nothing, .nothing): return true
case (.success, .success): return true
case (.failed, .failed): return true
case (.custom(let s1), .custom(let s2)) where s1 == s2: return true

case _: return false
}
}
}

关于swift - 是否可以将 Enum 值与 'if' 语句进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50868135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com