2016-07-16 19 views
1

Swiftでは、1つのジェネリックタイプが他のタイプから継承されていることをどのようにチェックできますか?ジェネリック型の1つがSwiftの他のジェネリック型のサブクラスであるかどうかをチェックする方法は?

私はこのコードを持っている:

class Style<U: Styleable> { 
    ... 
    init<V: Styleable>(_ style: Style<V>) { 
     ... 
    } 
} 

を私はUVのサブクラスであるとき、それだけで呼び出すことができることを、このINITの内側に確認する必要があります。私はコンパイル時にこれをチェックする方法を知らない。Swiftはあるジェネリック型を他のジェネリック型のサブクラスに制限することはできない。だから私ができる唯一のことは、間違った方法で使用するとプログラムがクラッシュするようにいくつかのアサーションを使うことです。

これを解決する方法はありますか?

+0

@MartinR:私は間違った例を与えた。私が解決しようとした本当の問題は少し難しかったです。編集した質問を確認してください。 –

答えて

1

まあ、私は答えを見つける。とても近かった: assert(U.self is V.Type)

+0

これはコンパイル時のステートメントのランタイムチェックです。それは動作しますが、遅すぎます。 –

関連する問題