gpt4 book ai didi

swift - Comparable 协议(protocol)可以通用吗?

转载 作者:搜寻专家 更新时间:2023-10-31 22:27:18 31 4
gpt4 key购买 nike

考虑这个结构:

struct Person : Comparable {
let name: String
let age: Int
}

extension Person {
static func < (lhs: Person, rhs: Person) -> Bool {
return lhs.name < rhs.name
}

static func == (lhs: Person, rhs: Person) -> Bool {
return lhs.age == rhs.age && lhs.name == rhs.name
}
}

Person结构现在按名称排序。

但是,如果我希望能够按 name 中的任何一个进行排序怎么办?或 age , 有没有办法制作 <功能通用?

最佳答案

您不能使协议(protocol)通用。有两种方法可以解决您的问题:

您可以创建一个包装器结构,它只包含一个 Person 值,但按不同的属性组合排序。

或者,您可以想出一种方法来编写比较两个事物的方法。我们在 Swift Talk 剧集中做到了这一点:https://talk.objc.io/episodes/S01E19-from-runtime-programming-to-functions (如果你不想看视频,你可以看文字记录)。

关于swift - Comparable 协议(protocol)可以通用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44742063/

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