gpt4 book ai didi

ios - 协议(protocol)关联类型和泛型

转载 作者:行者123 更新时间:2023-11-29 12:02:32 25 4
gpt4 key购买 nike

我的代码是这样的:

protocol Remotable {
init?(dict: Dictionary<String, String>)
}

protocol SearchResultable {
associatedtype TRS: Remotable
static func myFunction(remote: TRS)
}

struct MySearchResult<T:SearchResultable, TR: Remotable> {
typealias TRS = TR
let items: Array<T>
let limit: Int

func testMethod() {
let dict = [["id": "asd123"],["id":"asd456"]]
let a = dict.flatMap(TRS.init)
let b = a[0] //has type TR
let c = T.myFunction(... //expects an argument of type T.TRS
}
}

而且我无法调用 myFunction,因为它需要 T.TRS 类型的参数。我期望我可以使用 TR 类型的 b 参数调用 myFunction。你知道我做错了什么吗?

最佳答案

我也找到了我自己问题的答案。我不知道哪个更好,如果有人能解释哪个更好以及为什么,我将不胜感激。

struct MySearchResult<T:SearchResultable, TR where T.TRS == TR > {
let items: Array<T>
let limit: Int

func testMethod() {
let dict = [["id": "asd123"],["id":"asd456"]]
let a = dict.flatMap(TR.init)
let b = a[0]
let c = T.myFunction(b)
}
}

所以我只需要告诉编译器 T.TRS 与 TR 相同。

关于ios - 协议(protocol)关联类型和泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36330572/

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