プロトコルが、クラスがスーパークラスを持つクラス&に対してのみ使用されるように指定するプロトコルまたはプロトコル拡張を実装することは可能ですか?自己がサブクラスであるSwiftプロトコル拡張
もしそうなら、私はこれを利用して、クラスのスーパークラスを反復して、それぞれが共通の変数を格納しているすべてのデータを集めることができますか?
つまり、次の例では、最後にallVals = ["core", "middle", "top"]
というように2番目のBaseType拡張擬似コードが実行しようとしている拡張機能を作成することは可能ですか?
import Foundation
protocol BaseType: class {
var data: [String] { get }
var all: [String] { get }
}
extension BaseType {
var all: [String] {
return data
}
}
// Is the intent of this extension realistic?
extension BaseType where Self.super is BaseType {
var all: [String] {
return data + super.all
}
}
class CoreDT: BaseType {
var core: String = "core"
var data: [String] { return [core] }
}
class MiddleDT: CoreDT {
var middle: String = "middle"
override var data: [String] { return [middle] }
}
class TopDT: MiddleDT {
var top: String = "top"
override var data: [String] { return [top] }
}
let allVals = TopDT().all
print(allVals)