gpt4 book ai didi

swift - Swift 中的抽象方法?

转载 作者:IT王子 更新时间:2023-10-29 05:36:37 24 4
gpt4 key购买 nike

关于抽象类的概念,我有几个问题要问 Swift 开发人员。

  1. 如何在 Swift 中定义抽象类?有什么方法可以防止类被实例化,同时为其子类提供初始化程序以供​​使用?
  2. 您如何定义抽象方法,同时实现其他方法?定义抽象方法时,Apple 通常会向您指出协议(protocol)(接口(interface))。但他们只解决了我问题的第一部分,因为他们定义的所有方法都是抽象的。如果您想在类中同时使用抽象方法和非抽象方法,您会怎么做?
  3. 泛型怎么样?您可能考虑过将协议(protocol)与扩展(类别)一起使用。但是泛型存在一个问题,因为协议(protocol)不能有泛型类型,只有类型别名

我已经完成了作业,我知道如何使用父类(super class)中的方法解决这些问题,例如 fatalError()preconditionFailure(),然后在基类。但对我来说,这似乎是丑陋的对象设计。

我发布这个的原因是为了找出是否存在更通用和通用的解决方案。

提前致谢,彼得。

最佳答案

截至今天(2016 年 4 月 7 日),the proposal to introduce abstract classes and methods to Swift (SE-0026)已被推迟。

Joe Groff posted the following in swift-evolution-announce 2016 年 3 月 7 日:

The proposal has been deferred from Swift 3. Discussion centered around whether abstract classes fit in the direction of Swift as a "protocol-oriented" language. Beyond any religious dogmas, Swift intends to be a pragmatic language that lets users get work done. The fact of the matter today is that one of Swift's primary target platforms is the inheritance-heavy Cocoa framework, and that Swift 2's protocols fall short of abstract classes in several respects [...].

We'd like to revisit this feature once the core goals of Swift 3 have been addressed, so we can more accurately consider its value in the context of a more complete generics implementation, and so we can address the finer points of its design.

我鼓励您阅读完整的电子邮件,但我认为结论与您在问题中得出的结论相同:我们目前坚持使用 Objective-C 做事方式(引发异常)。

关于swift - Swift 中的抽象方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36472186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com