为什么Swift不提供类成员初始化器?

时间:2016-03-16 12:50:17

标签: ios swift

为什么成员初始化程序仅为结构提供?

我是否需要自己编写初始化程序?

1 个答案:

答案 0 :(得分:6)

  

我是否需要自己编写初始化程序?

2015年12月/ 2016年1月,我们已经详尽地讨论了proposal to extend memberwise initializers to classes并使其更加灵活{/ 3}}。

最终,提案on the Swift Evolution mailing list出于各种原因,有可能在稍后重新审视该主题(在Swift 3发布之后)。

在拒绝中,Chris Lattner指出至少有一个原因,即成员初始化是专门为结构提供的:因为它可以编写纯粹的"包的属性",例如Vec4CGRect,开销最小:

  

2)成员初始糖有利于“POD”类型和其他“属性包”类型(例如“Vec4"”)和Cocoa的许多C结构类型(CGRect等)。在这些情况下,客户端通常希望显式初始化所有字段,并且成员初始化建议消除了此样板。这种情况是我们现有功能尝试服务的。

大多数类可能更复杂,并且您希望更多地控制成员初始化程序,这也会使该功能更加复杂。