Ich versuche, einen Tupel-Typ zu machen, der einen Hash-Artikel & ein beliebiges Element, & hat, verwenden Sie es in einem benutzerdefinierten Initialisierer für Dictionary. Allerdings wird Swift auf diese Weise nicht Hashable verwenden, & Ich stecke für eine Alternative fest. Ich möchte die Wörterbücher, die ich erstellen kann, nicht auf die Verwendung von Strings als Schlüssel beschränken.Tuple-Typ mit hashbaren Elementen
protocol CollectionInitializeable {
associatedtype T
init(items: [T])
}
extension Dictionary: CollectionInitializeable {
typealias T = (Hashable, Any) // not allowed
init(items: [T]) {
self.init()
// etc...
}
}
'CollectionInitializeable' noch der Initialisierer nimmt ein' Array', nicht irgendeine 'Sammlung'. – Alexander
@Alexander Punkt auf den Namen genommen, vielleicht sollte ich das Protokoll ArrayInitializeable :) nennen - aber ich habe keine Angabe aus diesem Codebeispiel gegeben, warum ich es so umgesetzt habe - ich glaube nicht, dass das das Problem hier ist. Wenn ich ein Wörterbuch mit einem Array von Tupeln initialisiere, dann ist das mein Ruf ... – SomaMan
Update: Das ist jetzt unnormal, dank ['Dictionary.init (uniqueKeysWithValues:)'] (https://developer.apple .com/documentation/swift/dictionary/2894798-init) und ['Dictionary.init (_: uniquingKeysWith:)'] (https://developer.apple.com/documentation/swift/dictionary/2892961-init) – Alexander