假设我想扩展具有某些功能的嵌套字典。使用伪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]
}
}
但是,我无法让这个工作。类型边界不能是非协议类型; Dictionary实现的协议没有提供我需要引用的方法I和类型;访问泛型的类型很麻烦;等等。我没有尝试过任何事情。
这是什么解决方案?
答案 0 :(得分:0)
我们可以在这里使用的一个技巧(我敢说模式?)是定义我们的自己的协议(我们从不打算在其他任何地方使用它),它声明了我们所需要的所有内容,我们知道{{1无论如何,都符合。
Dictionary
这个解决方案延续到数组阵列,可能还有很多类似的情况。