例如,如果我们有一个Foo继承自 class 的类Bar,并且符合协议Baz:
class Bar {}
protocol Baz {}
Run Code Online (Sandbox Code Playgroud)
class Foo: Bar, Baz {}
如果我们事先不知道这Bar是一个类并且Baz是一个协议(例如,当阅读别人的代码时)怎么办?在这种情况下,由于 后面有多个声明,情况可能会class Foo:很清楚。在 Swift 中,协议一致性声明必须位于继承子句中的超类声明之后。另一方面,这也可能是一个没有继承且符合多个协议的类。
另外,如果继承子句中只有一个声明怎么办?
class Foo: Bar {}
Run Code Online (Sandbox Code Playgroud)
或者:
class Foo: Baz {}
Run Code Online (Sandbox Code Playgroud)
在 Objective-C 中,由于协议名称被尖括号括起来,所以很清楚。在 Swift 中,尖括号用于泛型。对于这种情况,是否有语法支持使协议一致性在视觉上更加明确?
Swift 处理协议的方式与处理类型的方式基本相同。这是设计使然,其后果之一是在许多情况下很难立即区分协议一致性和类继承。
这是积极还是消极的事情是一个观点问题,值得讨论。因此,我不会解决这个问题。
识别给定关键字是否引用 aProtocol或 a的最快方法Class是按住Option 键单击该关键字。以下是每种情况下这样做的结果:

当然,只有当您在 Xcode 上阅读代码时,这才有意义。
| 归档时间: |
|
| 查看次数: |
761 次 |
| 最近记录: |