自动的
Codable
合成是选择性加入,即您必须声明
明确一致性:
enum Occupation: String, Codable {
case designer = "Designer"
case engineer = "Engineer"
}
public struct SteveJobs: Codable {
let name: String
let occupation: Occupation
}
见
SE-0166 Swift Archival & Serialization
通过采用这些协议,用户类型选择加入这个系统。
对于automatic也是如此
Hashable
和
Equatable
合成,
比较
Requesting synthesis is opt-in
在SE-0185中,其中
原因如下:
-
选择in的语法是自然的;在
今天斯威夫特有一个类型选择退出一个功能。
-
它要求用户有意识地决定公共api
以他们的类型浮出水面。类型不能意外地“落入”
用户不希望的一致性;不希望的类型
最初的支持可在稍后日期设置为,但是
逆转是一个突破性的变化。
-
通过检查,可以清楚地看到类型所支持的一致性
它的源代码;用户不会隐藏任何东西。
-
我们减少了编译器所做的工作和代码量
不合成不需要的一致性而产生
不使用。