[英]Enum with Raw value, Codable
自动Codable
合成是“选择加入”的,即您必须明确声明符合性:
enum Occupation: String, Codable { // <--- HERE
case designer = "Designer"
case engineer = "Engineer"
}
public struct SteveJobs: Codable {
let name: String
let occupation: Occupation
}
通过采用这些协议,用户类型选择加入该系统。
自动Hashable
和Equatable
合成也是如此,比较请求合成在 SE-0185 中是可选的,其中列出了一些原因:
选择加入的语法很自然; 今天在 Swift 中没有明确的类似物让类型选择退出功能。
它要求用户对他们的类型所呈现的公共 API 做出有意识的决定。 类型不能意外地“落入”用户不希望它们的一致性; 最初不支持 Equatable 的类型可以在以后使用,但反过来是一个重大变化。
通过检查其源代码可以清楚地看到类型支持的一致性; 对用户没有任何隐藏。
我们减少了编译器完成的工作以及通过不合成不需要和未使用的一致性而生成的代码量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.