我有一个协议:
protocol Prot1 { func returnMyself() -> Prot1}
并且一个类符合协议Prot1.
我可以强制函数returnMyself()的返回类型与下面的类的类型相同吗?
class MyClass: Prot1 { public func returnMyself() -> MyClass { return self }}
可能吗?
解决方法 只需将Self用于您的协议即可protocol Prot1 { func returnMyself() -> Prot1}
这是一个例子
protocol Animal { func mySelf() -> Self}class Feline: Animal { func mySelf() -> Self { return self }}class Cat: Feline { }Feline().mySelf() // FelineCat().mySelf() // Cat
关于协议扩展
你也可以像这样在协议扩展中使用Self
protocol Animal {}extension Animal { func mySelf() -> Self { return self }}
现在一个类只需要像这样符合Animal
class Feline: Animal { }class Cat: Feline { }class Dog: Animal {}
并自动获取方法
Feline().mySelf() // FelineCat().mySelf() // CatDog().mySelf() // Dog
更新
protocol ReadableInterval { }class Interval: ReadableInterval { }protocol ReadableEvent { associatedtype IntervalType: ReadableInterval func getInterval() -> IntervalType}class Event: ReadableEvent { typealias IntervalType = Interval func getInterval() -> Interval { return Interval() }}总结
以上是内存溢出为你收集整理的Swift协议函数:返回相同类型的符合类全部内容,希望文章能够帮你解决Swift协议函数:返回相同类型的符合类所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)