我编写了符合 Comparable 协议(protocol)的 Struct。
struct Record: Comparable {
static func < (lhs: Record, rhs: Record) -> Bool {
if lhs.wins == rhs.wins {
return lhs.losses > rhs.losses
}
return lhs.wins < rhs.wins
}
var wins: Int
var losses: Int
init(wins: Int, losses: Int) {
self.wins = wins
self.losses = losses
}
}
var a1 = Record(wins: 3, losses: 8)
var b1 = Record(wins: 3, losses: 9)
var c1 = Record(wins: 4, losses: 7)
var records = [a1, b1, c1]
records.reverse()
print(records)
使用 > < == 一切正常,也可以排序。但是如果我对记录数组进行反向排序方法,它会给我如下输出:
[__lldb_expr_48.Record(wins: 4, losses: 7), __lldb_expr_48.Record(wins: 3, losses: 9), __lldb_expr_48.Record(wins: 3, losses: 8)]
最高的胜利应该首先出现,其次是较少的胜利,但如果胜利相等,那么较少的损失应该先于更多的损失。我在这里做错了什么或遗漏了什么吗?我仍在快速学习,所以有可能。
最佳答案
要以相反的排序顺序排列一组东西,你可以只用 sort
通过 >
:
records.sort(by: >)
reverse
只会反转数组,而不对其进行排序。
关于Swift 4 Conform Comparable 协议(protocol)和排序方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54762355/