2017-09-29 7 views
0

J'essaye de créer une fonction générique pour le dictionnaire (de n'importe quel type de données). Je reçois cette erreur mais quand j'appelle la fonction:fonction de dictionnaire générique rapide

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

mon code est le suivant:

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) 

Répondre

4

Vous obtenez cette erreur parce que vous n'utilisez pas correctement les médicaments génériques, un générique est un espace réservé pour un type spécifique que vous ne connaissez pas d'avance (notez qu'il est en fait différent du type Any).

Vous devriez faire:

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

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

La ': ​​restriction Hashable' n'est pas nécessaire, qui est implicite donnée en raison de' [T: U] '. –

+0

@MartinR Wow, surprenant! Je ne savais pas à propos de cette partie implicite des types génériques –

+0

@MartinR Mis à jour ma réponse, merci! –