Swift协议函数:返回相同类型的符合类
发布时间:2020-12-14 04:46:21 所属栏目:百科 来源:网络整理
导读:我想知道是否可以在 Swift中完成类似java(或c)的操作: 我有一个协议: protocol Prot1 { func returnMyself() - Prot1} 并且一个类符合协议Prot1. 我可以强制函数returnMyself()的返回类型与下面的类的类型相同吗? class MyClass: Prot1 { public func ret
我想知道是否可以在
Swift中完成类似java(或c)的操作:
我有一个协议: protocol Prot1 { func returnMyself() -> Prot1 } 并且一个类符合协议Prot1. 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() // Feline Cat().mySelf() // Cat 关于协议扩展 你也可以像这样在协议扩展中使用Self protocol Animal {} extension Animal { func mySelf() -> Self { return self } } 现在一个类只需要像这样符合Animal class Feline: Animal { } class Cat: Feline { } class Dog: Animal {} 并自动获取方法 Feline().mySelf() // Feline Cat().mySelf() // Cat Dog().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() } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 配置log4j2.xml输出MyBatis的SQL日志
- ruby-on-rails – rails polymorphic url params
- 使用Unity依赖注入的时候,最上层的类是Resolve还是New的问
- cocoStudio Animation Editor制作的序列帧动画在cocos2dx 3
- 关于vuex的学习实践笔记
- Mevan(转)
- c# – Automapper Custom Resolver – 将Repository注入构造
- ruby-on-rails – Rails 3:调用操作但不离开/刷新当前页面
- oracle锁的处理查找,处理
- c# – 通过将UI分解成“区域”来提高WPF性能 – 这是可能的