2016-04-13 12 views
0

パラメータ化された型に応じて、いくつかの異なる型の配列を返す関数を作成したいと考えています。私はリターン値をリテラルとして指定したいと思っています。特定のコードが戻りライン上でこのエラーを生成することSwiftジェネリック関数からリテラル値を返しますか?

func values<T>() -> [T] { 
    switch T.self { 
     case is String.Type: 
      return ["A", "B", "C"] 
     default: 
      return [] 
    } 
} 

:(?またはこれに類似した何か)これを行う方法は、それはこのようになるはずがあり「タイプのreturn式を変換できません「[文字列] 'to return type' [T] '"

なぜなら、セクションが列挙型の要素である変数sections(または関数)を持つ汎用ビューコントローラを作成しようとしているからです。しかし、私は、クラスがパラメータ化された型に応じて異なる列挙型を使いたいと思います。

答えて

2

あなたが記述しているオーバーロード:多くの場合

func values() -> [String] { 
    return ["A", "B", "C"] 
} 

func values() -> [Int] { 
    return [1,2,3] 
} 

、しかし、返す型のオーバーロードは、あなたがあまりにも多くの明示的な型を使用する必要があるため非常に不便であることが判明したが、あなたの説明では、これはすべきうまく動作します。

関連する問題