2017-09-29 8 views
0

辞書(任意のデータ型)の汎用関数を作成しようとしています。私は、関数を呼び出すとき、私はかかわらず、このエラーを取得:素早い汎用辞書関数

error: cannot convert value of type '[Int : String]' to expected argument type '[_ : _]' wprintgeneric(inp: w) ^

次のように私のコードは次のとおりです。

var w=[1:"wisam",2:"khlaid",3:"abd"] //dictionary 

func wprintgeneric<T>(inp:[T:T]){ 

    for (i,j) in inp{print(i,j)} 
} 

wprintgeneric(inp: w) 

答えて

4

あなたは正しくジェネリックを使用していないため、このエラーを得ている、ジェネリックがありますあなたが前もって知りません特定のタイプのプレースホルダ(実際にはAnyタイプとは異なります)。

あなたが行う必要があります: `

func wprintgeneric<T,U>(inp:[T:U]){ 

    for (i,j) in inp { 
     print(i,j) 
    } 
} 
+1

を:':Hashable'制限が必要とされていない、それが原因 '[U T]に与えられた暗黙的です。 –

+0

@MartinRうわー、驚くべきことだ!ジェネリック型のこの暗黙の部分について知りませんでした –

+0

@MartinR私の答えを更新しました、ありがとう! –