2017-06-09 13 views
0

Intのプロパティを宣言するプロトコルがあります。私はまた、Protocolに準拠しているクラスはほとんどありません。そして、これらのすべてのためにオペレータ+をオーバーロードする必要があります。演算子+は宣言されたプロパティに基づいて動作するので、私は各クラスでその演算子を個別に実装したくありません。プロトコル用のSwift 3オーバーロード演算子

だから私は

protocol MyProtocol { 
    var property: Int { get } 
} 

を持っていると私は成功していることが、私はエラーambiguous reference to member '+'を取得することで動作するようにしようとしていた、実際に

extension MyProtocol { 
    static func +(left: MyProtocol, right: MyProtocol) -> MyProtocol { 
     // create and apply operations and return result 
    } 
} 

のようなものを持ってしたいと思います。

operator overload funcを各クラスに個別に移動すると、disappearedが発行されますが、まだプロトコルで動作するようにするソリューションを探しています。それはMyProtocol

protocol MyProtocol { 
    var property: Int { get } 
} 

func +(left: MyProtocol, right: MyProtocol) -> MyProtocol { 
    // create and apply operations and return result 
} 

これはエラーなしで動作しますが、私は:)がどのように誰かを説明できるか分からないと宣言されたファイルの中だけの方法であるので、拡張のfunc +...外を移動することで、解決

答えて

1

任意のクラス/拡張/プロトコル/外部のfuncを宣言することは可能ですか?

関連する問題