2016-07-11 14 views
0

Swift Genericsを使用する場合、型プレースホルダはすべて同じ型でなければなりませんか?次の例では、すべてのタイププレースホルダが文字列型になります。パラメータが文字列で、戻り値の型がIntであるかジェネリックスで動作するのは可能ですか?各プレースホルダは同じ型ですか?Swiftジェネリックパラメータと戻り値型

は、ここに例を示します

func takeAndReturnSameThing<T>(t: T) -> T { 
    return t 
} 

Let thing = takeAndReturnSameThing("howdy") 

答えて

1

はい

型パラメータ(「プレースホルダ」)の全体のポイントは、彼らは一貫して同じタイプを表すということです。

複数のタイプを総称的に表現したい場合は、新しいタイプのパラメータを導入します。

func takeAndReturnADifferentThing<T, U>(t: T) -> U { 
    return t.getU() 
} 
1

あなたはこのように、複数のジェネリック型を持つことができます。もちろん

func takeAndReturnDifferentThing<T,U>(t:T) -> U { 
    return t.convertToU() // Assuming type T has this method. 
} 

TはS.

に変換することができますが、TとSの両方を確実にする必要があります constrain