protocol A {
func f()
}
struct S1 : A {
func f() {
print("S1")
}
}
struct S2 : A {
func f() {
print("S2")
}
}
let array: [A] = [S1(), S2()]
for s: A in array {
s.f()
}
// "S1\n" "S2\n"
これが継承階層である場合、Swift は v-table を使用して正しい実装を検索することを期待します。しかし、具体的な型はarray
を実装するものであれば何でもA
構いませんし、その他のプロトコルもいくらでもあります。Swift ランタイムは、v-tables も使用している場合、オブジェクトの構造をどのように知るのでしょうか?