gpt4 book ai didi

swift - 使用 associatedType 作为 Type 从泛型类继承协议(protocol)

转载 作者:行者123 更新时间:2023-12-04 04:00:15 25 4
gpt4 key购买 nike

我有一个非常具体的问题,我无法通过 SO 上的给定答案解决这个问题。为了简化这个问题,我删除了所有不需要的东西。此代码仅显示理解问题所需的一切:

所以我有一个看起来像这样的类:

class DataSource<T> {

var data: [T] = []
}

现在我想要一个协议(protocol),它继承自该类但不指定泛型(这甚至可能吗?)

像这样的东西:(这不编译但这是问题)

protocol Example: DataSource<Item> {

associatedtype Item

func getItems() -> [Item]
}

可以限制泛型(例如使用另一个协议(protocol))。像这样:

protocol Example: DataSource<Item> where Item: Equatable { // or whatever 

associatedtype Item

func getItems() -> [Item]
}

我尝试了一些不同的方法,但我的想法都没有奏效。是否可以从协议(protocol)的 associatedType 指定泛型?我是否必须重新考虑这个概念,还是我只是遗漏了一些细节?

最佳答案

也许你的意思是:

class DataSource<T> {
var data: [T] = []
}

protocol Example {
associatedtype Item
func getItems() -> [Item]
}

extension DataSource: Example {
typealias Item = T

func getItems() -> [T] {
return self.data
}
}

关于swift - 使用 associatedType 作为 Type 从泛型类继承协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63135955/

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