Swift 2.0 の新しい拡張プロトコルで遊ぶには、次の例を使用します。
protocol A {
func foo()
}
protocol B {
func foo()
}
extension A {
func foo() { print("A") }
}
extension B {
func foo() { print("B") }
}
class C: A, B {
}
「多重継承」のようなもので、もちろんPythonやC++などの一部の言語は多重継承として処理できます。私が本当に驚いたのは、Xcode 7.0 Beta 4 で発生した 2 つのコンパイル エラーです。
タイプ「C」はプロトコル「A」に準拠していません
タイプ「C」はプロトコル「B」に準拠していません
しかし、このエラーは意味がありません。エラーは、プロトコルA
と関数B
の使用に関する競合またはあいまいさなどを反映している必要があるためです。foo
上記のコードの下に次の行を追加すると:
C().foo()
これはまさに私が話しているエラータイプを起動します:
「foo」のあいまいな使用
ここでの私の質問は次のとおりです。
Swift 2.0 に拡張プロトコルが新たに追加されたことで、Apple はこの種の「多重継承」(C++ 処理の方法のようなもの) の処理を検討しましたか、それともまったく許可されていませんか?