2
私は奇妙な問題に直面しています。ここには次のようなものがあります。Swiftのジェネリックスのジェネリック3
class Simple<T : Equatable> { ... }
そして、私はこの単純な(汎用)タイプと、別のジェネリック型の制約を持つことを望む:
は、私は、単純なジェネリック型を持って、私に説明してみましょうもちろん
class Complex<U : Simple> { ... } // WRONG!
ないことコンパイルもこれではない:
class Complex<U : Simple<T : Equatable>> { ... } // WRONG!
も:
class Complex<U : Simple<T>> where T : Equatable { ... } // WRONG!
私が見つけた唯一の方法は次のとおりです。
class Complex<T : Equatable, U : Simple<T>> { ... }
だから私は、各インスタンス化にT
を繰り返す必要があります。
let x = Complex<Date, Simple<Date>>()
最悪、私はそのようなことがあれば想像:
ことclass SimpleThing : Simple<Thing> { ... }
let y = Complex<Thing, SimpleThing>()
私はComplex
をどのように宣言できますか?このようにしますか?:
let x = Complex<Simple<Date>>()
let y = Complex<SimpleThing>()
Swift 3でのみ可能ですか?
ありがとうございます。
ありがとう、これは一見簡単な問題のためのちょっと複雑な解決策です。とにかく、このようにこの問題を見るのは非常に便利です。 – Zaphod