私はいくつかのフレームワークに取り組んでおり、問題に直面しています。一般的な補完が非汎用として渡される
私は公共のプロトコルがあります
public protocol MyPublicProtocol1 {
}
そして、別のものを、ウィッヒは、渡された汎用的な引数を持つ関数が含まれています。一般的な引数には制約があります - 引数の型は最初の公開プロトコルを実装する必要があります。
次に、公開クラスではないプロトコルを実装しています。一般的な引数でその関数内私は、一般的な議論をしませ取る別のものを呼び出し、そのように見ている:
class MyPublicProtocol1Impl: MyPublicProtocol1 {
}
class MyPublicProtocol2Impl: MyPublicProtocol2 {
func someFunc<T: MyPublicProtocol1>(completion: (T) ->()) {
anotherFuncWith(completion: completion)
}
}
そしてもちろん、私はエラーを持っている:
func anotherFuncWith(completion: (MyPublicProtocol1) ->())
そして、ここでは、実装は次のようになります。最後の文字列に
私は好きではない、一般的な引数でsomeFunc(完了:)を宣言することはできません。MyPublicProtocol1Implクラスは、公開してはならないので
func someFunc(completion: (MyPublicProtocol1Impl) ->())
。また、anotherFuncWith(完了:)も何らかの理由で汎用引数を取ることはできません。
やや"変換" する方法がある(Tを:MyPublicProtocol1) - >()完了ちょうど(MyPublicProtocol1)ことにする - >()は?
何か助けやアドバイスをいただければ幸いです。私の話を読んでくれてありがとう!
あなたの試行されたソリューションで解決してください。多くの場合、最良のソリューションは私の現在のアプローチとは異なるものです。 – PeejWeej