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

umuewwlo  于 2023-07-01  发布在  iOS
关注(0)|答案(2)|浏览(117)

为什么只为结构提供成员初始化器?
我需要自己写初始化程序吗?

hgqdbh6s

hgqdbh6s1#

我需要自己写初始化程序吗?
是的
proposal to extend memberwise initializers to classes并使其更灵活已在2015年12月/2016年1月的on the Swift Evolution mailing list中进行了详尽的讨论。
最终,由于各种原因,提案has been rejected,有可能在以后(Swift 3发布后)重新讨论这个主题。
在拒绝中,Chris Lattner指出了至少一个原因,为什么成员初始化是专门为结构提供的:因为它可以以最小的开销编写纯“属性包”,例如Vec4CGRect
2)Memberwise init sugar强烈地有益于“POD”类型和其他“属性袋”类型(例如,P0 D)。“Vec 4”),以及可可拥有的许多C结构类型(CGRect等)。在这些情况下,客户端通常希望显式地初始化所有字段,而memberwise init建议消除了这种样板。这种情况是我们现有功能试图服务的。
大多数类可能更复杂,并且您可能希望对memberwise初始化器进行更多控制,这也会使该功能更加复杂。

4jb9z9bj

4jb9z9bj2#

你不需要自己编写初始化器。
https://stackoverflow.com/a/76582056/2810187上查看我的其他答案

相关问题