如何判断Swift类是从另一个类继承还是符合协议?

时间:2014-07-04 13:55:01

标签: xcode swift

例如,如果我们有一个继承自Foo类的类Bar,并且符合协议Baz

class Bar {}

protocol Baz {}

class Foo: Bar, Baz {}

如果我们事先不知道Bar是一个班级而且Baz是一个协议(例如,在阅读其他人的代码时),该怎么办? 在这种情况下,由于class Foo:之后存在多个声明,可能清除。在Swift中,协议一致性声明必须在继承子句中的超类声明之后。另一方面,这也可能是一个没有符合多种协议的继承的类。

如果继承子句中只有一个声明呢?

class Foo: Bar {}

或者:

class Foo: Baz {}

在Objective-C中,很明显,因为协议名称被尖括号包围。在Swift中,尖括号用于泛型。是否有语法支持使协议一致性在这种情况下更直观明确?

1 个答案:

答案 0 :(得分:4)

Swift处理协议的方式与处理类型的方式大致相同。这是设计的,其中一个后果是很难在很多情况下立即区分协议一致性和类继承。

这是积极的还是消极的,是一个意见问题,需要讨论。因此,我不会解决它。

更多实际方面:

确定给定关键字是指Protocol还是Class的最快捷方式是选项 - 点击关键字。以下是每种情况下的结果:

class protocol

当然,只有在Xcode上阅读代码时才有意义。