2015-10-18 7 views
11

Swiftでジェネリックタイプを有効にすることはできますか?一般的なタイプのスイッチをオンにしますか?

は、ここで私が何を意味するかの例です:上記のコードを使用しようとすると

func doSomething<T>(type: T.Type) { 
    switch type { 
    case String.Type: 
     // Do something 
     break; 
    case Int.Type: 
     // Do something 
     break; 
    default: 
     // Do something 
     break; 
    } 
} 

、私は次のエラーを取得:

Binary operator '~=' cannot be applied to operands of type 'String.Type.Type' and 'T.Type' 
Binary operator '~=' cannot be applied to operands of type 'Int.Type.Type' and 'T.Type' 

タイプのスイッチをオンにする方法はありますが、または類似の何かを達成するために?あなたがisパターン必要

答えて

16

を(ジェネリックの種類に応じて、汎用的で実行するさまざまなアクションでメソッドを呼び出す):break文は、通常は必要ありませんことを

func doSomething<T>(type: T.Type) { 
    switch type { 
    case is String.Type: 
     print("It's a String") 
    case is Int.Type: 
     print("It's an Int") 
    default: 
     print("Wot?") 
    } 
} 

は注意を、ない はありませんスウィフトの場合の「デフォルトフォールスルー」

+0

'switch type'を使用すると奇妙な警告が表示されますが、' switch T.self'は完全に動作します。ありがとう! –

+2

@jackwilsdon:奇妙なことに、Xcode 7.0.1でテストした結果、警告は表示されませんでした。 –

+0

私は遊び場を使っていますが、遊び場をリロードした後、警告は消えました。ありがとう! –

関連する問題