扩展一个符合协议的Class?
Extend a Class that conforms a protocol?
如何扩展实现协议的 class?
类似的东西:
protocol proto {
func hey()
}
和符合proto
的class:
Class MyClass: UIViewController, proto {
func hey() {
print("Hey!")
}
}
然后 class 的扩展看起来像:
extension UIViewController where Self:proto {
func test() {
print("I'm extended!")
}
}
这样我就可以在 MyClass
中调用 self.test()
。
谢谢。
首先,您必须在 proto
中声明 test
方法,以便 MyClass
知道它实现了此方法。
protocol proto {
func hey()
func test()
}
您还必须 "reverse" 协议扩展中的语句:
extension proto where Self : UIViewController {
func test() {
print("I'm extended!")
}
}
在那之后,MyClass
被神奇地扩展了,你可以在上面调用test
方法:
class MyClass: UIViewController, proto {
override func viewDidLoad() {
super.viewDidLoad()
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!")
}
}
如何扩展实现协议的 class?
类似的东西:
protocol proto {
func hey()
}
和符合proto
的class:
Class MyClass: UIViewController, proto {
func hey() {
print("Hey!")
}
}
然后 class 的扩展看起来像:
extension UIViewController where Self:proto {
func test() {
print("I'm extended!")
}
}
这样我就可以在 MyClass
中调用 self.test()
。
谢谢。
首先,您必须在 proto
中声明 test
方法,以便 MyClass
知道它实现了此方法。
protocol proto {
func hey()
func test()
}
您还必须 "reverse" 协议扩展中的语句:
extension proto where Self : UIViewController {
func test() {
print("I'm extended!")
}
}
在那之后,MyClass
被神奇地扩展了,你可以在上面调用test
方法:
class MyClass: UIViewController, proto {
override func viewDidLoad() {
super.viewDidLoad()
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!")
}
}