plu*_*plu 0 generics set swift codable swift4.1
protocol CodableWithDefault: Codable {
static var `default`: Self { get }
}
extension Set: CodableWithDefault {
static var `default`: Set {
return Set()
}
}
Run Code Online (Sandbox Code Playgroud)
在Swift 4中,这工作正常,但是从4.1开始,它抱怨:
'CodableWithDefault' requires that 'Element' conform to 'Encodable'
我找不到任何表示要扩展的方法Set,该扩展Element也必须实现Encodable。
Swift 4.1完全可行吗?
有了这个
extension Set: CodableWithDefault { ... }
Run Code Online (Sandbox Code Playgroud)
您正在Set遵守Codable但未提供必需的方法。
在Swift 4.1中,仅当Set的通用元素为时,才可以避免实施必需的方法Codable。
所以你需要限制扩展名
extension Set: CodableWithDefault where Element : Codable {
static var `default`: Set {
return Set()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |