【问题标题】:Swift 2.0 beta Dictionary extensionSwift 2.0 beta 字典扩展
【发布时间】:2015-08-24 11:34:12
【问题描述】:

试图创建一个不可变的字典。这个想法是拥有不可变的键和值数组,然后将它们传递给一个

Dictionary constructor: let dict = Dictionary(aStringArray, aSameLengthDoubleArray)

然而,以下代码给出了编译时错误。

extension Dictionary {
    init<T:Hashable,U>(keys: [T], values: [U]) {
        self.init()
        for (index, key) in keys.enumerate() {
            self[key] = values[index]
        }
    }
}

错误:

错误: 不能用 'Dictionary' 类型的值下标 'T' 类型的索引 self[key] = values[index]

有人可以解释一下吗?

【问题讨论】:

    标签: ios macos swift generics swift2


    【解决方案1】:

    如果您知道 Dictionary 已经为其关联的类型键和值具有类型别名。键的类型应为 Key,值的类型应为 Value。就像在 Array 中输入 Element 一样。上面的事情你可以简单地使用 Key 和 Value 来实现,

    extension Dictionary {
        init(keys: [Key], values: [Value]) {
            self.init()
            for (index, key) in keys.enumerate() {
                self[key] = values[index]
            }
        }
    }
    let a = Dictionary(keys: [1, 2, 3, 4, 5], values: ["Michael", "Jack", "Kurt", "Jim", "Stewart"])
    

    【讨论】:

    • 感谢GeneratorOfOne!您的回答也帮助我理解了泛型类型与泛型函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多