Swift协议冗余遵循与类冗余继承无警告问题咨询
Swift中重复遵循继承协议/重复继承父类无警告的原因
针对你提出的问题,Swift编译器允许这种冗余声明且不给出警告,主要有以下几个核心原因:
代码可读性优先:允许开发者显式写出所有想要遵循的协议或继承的类,能让阅读代码的人无需追溯协议继承链(或类继承链),直接看到类型的全部约束关系。比如新手开发者可能不清楚
Square协议继承自Rect,显式写Object: Square, Rect能更直观地传递类的遵循要求。编译器自动去重处理:Swift编译器在解析类型声明时,会自动识别并忽略重复的协议遵循或类继承声明。因为
Square已经继承了Rect,Object遵循Square就间接满足了Rect的所有要求,重复声明Rect不会给类带来额外的实现负担,编译器判定这种冗余是无害的,因此不会触发警告。语法设计的兼容性考量:这种设计也适配了一些复杂场景,比如协议的条件遵循、扩展中的协议组合等,显式重复声明有时能避免歧义,同时保持语法的灵活性,不需要强制开发者必须省略间接的协议/类声明。
举个类继承的对应例子,同样不会有警告:
class Rect { } class Square: Rect { } class Object: Square, Rect { }
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

