Swift协议函数:返回相同类型的符合类

Swift协议函数:返回相同类型的符合类,第1张

概述我想知道是否可以在 Swift中完成类似java(或c)的 *** 作: 我有一个协议: protocol Prot1 { func returnMyself() -> Prot1} 并且一个类符合协议Prot1. 我可以强制函数returnMyself()的返回类型与下面的类的类型相同吗? class MyClass: Prot1 { public func returnMyself() 我想知道是否可以在 Swift中完成类似java(或c)的 *** 作:

我有一个协议:

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协议函数:返回相同类型的符合类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1008805.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存