为什么只为结构提供成员初始化器?我需要自己写初始化程序吗?
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指出了至少一个原因,为什么成员初始化是专门为结构提供的:因为它可以以最小的开销编写纯“属性包”,例如Vec4或CGRect:2)Memberwise init sugar强烈地有益于“POD”类型和其他“属性袋”类型(例如,P0 D)。“Vec 4”),以及可可拥有的许多C结构类型(CGRect等)。在这些情况下,客户端通常希望显式地初始化所有字段,而memberwise init建议消除了这种样板。这种情况是我们现有功能试图服务的。大多数类可能更复杂,并且您可能希望对memberwise初始化器进行更多控制,这也会使该功能更加复杂。
Vec4
CGRect
4jb9z9bj2#
你不需要自己编写初始化器。在https://stackoverflow.com/a/76582056/2810187上查看我的其他答案
2条答案
按热度按时间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指出了至少一个原因,为什么成员初始化是专门为结构提供的:因为它可以以最小的开销编写纯“属性包”,例如
Vec4
或CGRect
:2)Memberwise init sugar强烈地有益于“POD”类型和其他“属性袋”类型(例如,P0 D)。“Vec 4”),以及可可拥有的许多C结构类型(CGRect等)。在这些情况下,客户端通常希望显式地初始化所有字段,而memberwise init建议消除了这种样板。这种情况是我们现有功能试图服务的。
大多数类可能更复杂,并且您可能希望对memberwise初始化器进行更多控制,这也会使该功能更加复杂。
4jb9z9bj2#
你不需要自己编写初始化器。
在https://stackoverflow.com/a/76582056/2810187上查看我的其他答案