インスタンス関数の場合、キャストは問題なく機能します。
protocol Protocol1 {}
extension Protocol1 {
func instanceFunc() {}
static func staticFunc() {}
}
protocol Protocol2 {}
extension Protocol2 {
func instanceFunc() {}
static func staticFunc() {}
}
struct Struct: Protocol1, Protocol2 {
func instanceFunc() {
(self as Protocol1).instanceFunc()
(self as Protocol2).instanceFunc()
}
static func staticFunc() {
// My best guess. Nope!
(Struct as Protocol1.Type).staticFunc()
(Struct as Protocol2.Type).staticFunc()
}
}