如何让Tuple符合Swift中的协议?

问题描述 投票:0回答:1
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

swift generics
1个回答
0
投票

答案就在发出的错误中:

only struct/enum/class types can conform to protocols

元组不能符合协议。


注:

SE-0283:元组符合

Equatable
Comparable
Hashable
已在 2020 年被 Swift Evolution 流程接受。因此,这三个协议至少应该适用于其成员都符合的元组每个协议。然而,该提案的实施遇到了某种障碍,并且该功能尚未在 Swift 中提供。

© www.soinside.com 2019 - 2024. All rights reserved.