Swift:如何让协议关联类型自动推断遵循类的类型
Swift协议关联类型自动推断简化实现
你可以通过给协议的关联类型设置默认值为Self,让Swift自动推断关联类型T,从而省去手动声明typealias的步骤。
修改后的协议定义
protocol Conforming { associatedtype T = Self func returnSelf() -> T }
简化后的类实现
这样遵循协议的类无需额外声明typealias,直接实现方法即可:
class Test: Conforming { func returnSelf() -> Test { return self } }
甚至可以进一步简化,让方法返回Self,后续子类继承时也能自动适配返回类型:
class Test: Conforming { func returnSelf() -> Self { return self } }
原理说明
当协议的关联类型T设置了= Self的默认值后,只要你实现的returnSelf()方法返回类型与当前类(Self)匹配,Swift就会自动将T推断为当前类的类型,完全不需要手动指定typealias。如果有特殊场景需要让T指向其他类型,依然可以手动添加typealias T = 目标类型来覆盖默认值,灵活性不受影响。
内容的提问来源于stack exchange,提问作者Will
相关产品推荐
相关产品推荐

