具有可哈希项的元组类型

Tuple type with hashable items

我正在尝试制作一个元组类型,它有一个 Hashable 项和一个 Any 项,并在 Dictionary 的自定义初始化程序中使用它。但是,Swift 不会以这种方式使用 Hashable,而且我不得不寻找替代方案。我不想将我可以创建的词典限制为仅使用字符串作为键。

protocol CollectionInitializeable {
    associatedtype T
    init(items: [T])
}

extension Dictionary: CollectionInitializeable {

    typealias T = (Hashable, Any) // not allowed

    init(items: [T]) {

        self.init()
        // etc...
    }
}

更新:

多亏了Dictionary.init(uniqueKeysWithValues:) and Dictionary.init(_:uniquingKeysWith:)

,现在这已经没有必要了

原文Post:

您在找这样的东西吗?

protocol CollectionInitializeable {
    associatedtype T
    init<C: Collection>(items: C) where C.Iterator.Element == T
}

extension Dictionary: CollectionInitializeable {
    typealias T = Iterator.Element
    
    init<C: Collection>(items c: C)
    where C.Iterator.Element == T {
        self.init()
        for (key, value) in c {
            self[key] = value
        }
    }
}

let a = [
    (key: 1, value: "a"),
    (key: 2, value: "b"),
    (key: 3, value: "c")
]

print(Dictionary(items: a))