[英]Extend a Class that conforms a protocol?
如何扩展实现协议的类?
像这样的东西:
protocol proto {
func hey()
}
和一个符合proto
的类:
Class MyClass: UIViewController, proto {
func hey() {
print("Hey!")
}
}
然后是该类的扩展,看起来像:
extension UIViewController where Self:proto {
func test() {
print("I'm extended!")
}
}
这样我就可以在MyClass
调用self.test()
。
谢谢。
您可以只扩展协议,而不是类型。 请尝试以下方法:
protocol proto {
func hey()
}
class MyClass: UIViewController, proto {
func hey() {
print("Hey!")
}
func test2() {
self.test()
}
}
extension proto where Self: UIViewController {
func test() {
print("I'm extended!")
}
}
首先,你必须在proto
声明test
方法,以便MyClass
知道它实现了这个方法。
protocol proto {
func hey()
func test()
}
您还必须“反转”协议扩展中的语句:
extension proto where Self : UIViewController {
func test() {
print("I'm extended!")
}
}
之后, MyClass
被神奇地扩展,您可以在其上调用test
方法:
class MyClass: UIViewController, proto {
override func viewDidLoad() {
super.viewDidLoad()
test()
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.