我認(rèn)為題目和例子說(shuō)明了一切:)這有可能嗎?
protocol Foo {
func bar()
}
extension Foo {
func bar() {
print("bar form extension")
}
}
enum Day: Foo {
case sunday, monday
func bar() {
switch self {
case .sunday: print("bar custom implementation")
case .monday: // I want to call the default implementation
}
}
}
只需從協(xié)議中刪除聲明,并只保留擴(kuò)展定義。然后,如果具體類(lèi)型沒(méi)有重寫(xiě),或者除了符合
Foo
之外對(duì)具體類(lèi)型一無(wú)所知,編譯器將只使用extension方法您需要
(self as Foo)
使編譯器忘記self
是一個(gè)Day
,并使用Foo
擴(kuò)展函數(shù)。