protocol CodableWithDefault: Codable {
static var `default`: Self { get }
}
extension Set: CodableWithDefault {
static var `default`: Set {
return Set()
}
}
这在 Swift 4 中运行良好,但从 4.1 开始它会提示:
“CodableWithDefault”要求“Element”符合“Encodable”
我找不到任何方式来表达我想要限制 Element
的 Set
的扩展也实现 Encodable
。
这在 Swift 4.1 中完全可行吗?
最佳答案
有了这个
extension Set: CodableWithDefault { ... }
您正在使 Set
符合 Codable
而未提供所需的方法。
在 Swift 4.1 中,只有当 Set 的通用元素是 Codable
时,您才可以避免执行所需的方法。
所以你需要限制你的扩展
extension Set: CodableWithDefault where Element : Codable {
static var `default`: Set {
return Set()
}
}
关于Swift 4.1 - Set 扩展要求 Element 符合 Encodable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49754493/