func foo<T:Collection>(val: T) where T.Element: Codable {}
foo(val: ["hello", "hi"]) // ok
foo(val: ["hello": "hi"]) // error
// Type '(key: String, value: String)' cannot conform to 'Decodable'; only struct/enum/class types can conform to protocols
我知道字典的关联类型
Element
是(key: Key, value: Value)
。
但是我想知道如何使
Element
元组的(key: String, value: String)
符合Codable
?
答案就在发出的错误中:
only struct/enum/class types can conform to protocols
元组不能符合协议。
注:
Equatable
、Comparable
和 Hashable
已在 2020 年被 Swift Evolution 流程接受。因此,这三个协议至少应该适用于其成员都符合的元组每个协议。然而,该提案的实施遇到了某种障碍,并且该功能尚未在 Swift 中提供。