2016-05-19 7 views
2

私はこれらの行に沿ってクラスを持っています:class MyClass<Input>と私はInputタイプがVoidかどうかをチェックしたいと思います。Swiftジェネリックタイプが無効かどうかを確認する方法?

私はVoidにキャストしようとしましたが(Swiftコンパイラは許可しますが、これは常に失敗すると私に伝えます)、またはisを使用しています。

ジェネリックタイプがVoidであるかどうかを確認するにはどうすればよいですか?

答えて

5

汎用変数の.selfの値とVoidの値を比較することで、これを行うことができます。スウィフトの遊び場でスティックすることができます。

import UIKit 

class MyClass<T> { 
    init() { 
     if(T.self == Void.self) { 
      print("Void!") 
     } else { 
      print("Not Void!") 
     } 
    } 
} 

// Will print Not Void 
var test = MyClass<Int>() 

// Will print Void 
var test2 = MyClass<Void>() 
+0

おかげさまで、「Void.self」はパズルの欠けている部分でした。 – aehlke

+0

同様のテクニックはArray型で使えますか? – Shoerob

関連する問題