如何扩展其词汇本身为词典的词典?

时间:2017-01-10 13:14:38

标签: swift dictionary generics swift-extensions

假设我想扩展具有某些功能的嵌套字典。使用伪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和类型;访问泛型的类型很麻烦;等等。我没有尝试过任何事情。

这是什么解决方案?

1 个答案:

答案 0 :(得分:0)

我们可以在这里使用的一个技巧(我敢说模式?)是定义我们的自己的协议(我们从不打算在其他任何地方使用它),它声明了我们所需要的所有内容,我们知道{{1无论如何,都符合。

Dictionary

这个解决方案延续到数组阵列,可能还有很多类似的情况。