Поскольку кортежи не могут быть хэшируемыми в Swift, я создал обобщенную c struct Couple, содержащую два элемента, которые вместе можно использовать в качестве ключа к словарю.
struct Couple<U: Hashable, V: Hashable>: Hashable {
let u: U
let v: V
init( _ u: U, _ v: V ) {
self.u = u
self.v = v
}
}
var dictionary: [ Couple<Int,Int> : Any ] = ...
Теперь я хотел бы нравится расширять словарь, используя пару в общем.
extension Dictionary where Key == Couple<U: Hashable, V: Hashable>, Value == Any {
func exampleConvertToArray() -> [ ( U, V, Any ) ] {
}
}
Компилятор жалуется, независимо от того, как я ссылаюсь на пару, U, V в выражении расширения. Если я вместо этого добавлю generi c к определению функции, компилятор также пожалуется.
Если типы не являются generi c (extension Dictionary where Key == Couple<Int, Int>, Value == Any
), все в порядке.
Как я могу создать это расширение c generi?