gpt4 book ai didi

swift - 我如何扩展其值就是字典本身的字典?

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

假设我想用一些功能扩展嵌套字典。使用伪 Swift,这是我的目标:

extension Dictionary where Value: Dictionary {
typealias K1 = Key
typealias K2 = Value.Key
typealias V = Value.Value

subscript(k1: K1, k2: K2) -> V? {
return self[k1]?[k2]
}
}

但是我无法让它工作。类型界限不能是非协议(protocol)类型; Dictionary 实现的协议(protocol)没有提供我需要引用的方法 I 和类型;访问泛型类型很麻烦;等等。我尝试过的一切都没有成功。

有什么解决方案吗?

最佳答案

我们可以在这里使用的一个技巧(我敢说模式吗?)是定义我们自己的协议(protocol)(我们从来不打算在其他地方使用它),它声明了我们需要的并且我们知道的一切无论如何,字典符合。

protocol DictionaryProtocol {
associatedtype Key: Hashable
associatedtype Value

subscript(key: Key) -> Value? { get set }
}

extension Dictionary: DictionaryProtocol {}

extension Dictionary where Value: DictionaryProtocol {
typealias K1 = Key
typealias K2 = Value.Key
typealias V = Value.Value

subscript(k1: K1, k2: K2) -> V? {
return self[k1]?[k2]
}
}

这个解决方案适用于数组的数组,可能还有许多类似的情况。

关于swift - 我如何扩展其值就是字典本身的字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41569749/

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