SwiftでUIView<FooProtocol, BarProtocol>相当の宣言て出来ますか？


Objective-Cでは以下のように、複数のプロトコルを実装した具体的な型で変数宣言やプロパティ定義など出来ますが、

[code]

    UIView<FooProtocol, BarProtocol>* myView = ...
    
[/code]

Swiftでは同様の書き方ありませんか？




直接Objective-
Cと同じことはできませんが、型拡張で同じ事はできると思います。型Tがprotocolに適合していればそれはグローバルな状態だとおもうので、これでいいんじゃないでしょうか。

[code]

    protocol FooProtocol {
        var foo: String { get }
    }
    protocol BarProtocol {
        var bar: String { get }
    }
    
    extension UIView: FooProtocol, BarProtocol {
        var foo: String { return "foo" }
        var bar: String { return "bar" }
    }
    
    let a = UIView()
    a.foo // "foo"
    a.bar // "bar"
    
[/code]




直接Objective-
Cと同じことはできませんが、型拡張で同じ事はできると思います。型Tがprotocolに適合していればそれはグローバルな状態だとおもうので、これでいいんじゃないでしょうか。

[code]

    protocol FooProtocol {
        var foo: String { get }
    }
    protocol BarProtocol {
        var bar: String { get }
    }
    
    extension UIView: FooProtocol, BarProtocol {
        var foo: String { return "foo" }
        var bar: String { return "bar" }
    }
    
    let a = UIView()
    a.foo // "foo"
    a.bar // "bar"
    
[/code]

