0

インスタンス関数の場合、キャストは問題なく機能します。

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()
    }
}
4

1 に答える 1