2016-07-11 2 views
0

Lorsque vous travaillez avec Swift Generics, les espaces réservés de type doivent-ils tous être du même type? L'exemple ci-dessous transforme tous les espaces réservés de type en un type de chaîne. Est-il possible que le paramètre soit une chaîne et que le type de retour soit un travail Int ou do Generics où chaque espace réservé est le même type?Swift Paramètres génériques et types de retour

Voici l'exemple:

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

Let thing = takeAndReturnSameThing("howdy") 

Répondre

1

Oui

Le point entier des paramètres de type ("titulaires de place") est qu'ils représentent toujours le même type.

Si vous voulez représenter plusieurs types génériques, vous introduisez de nouveaux paramètres de type.

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

Vous pouvez avoir plusieurs types génériques comme ceci:

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

Bien sûr, vous devez constrain à la fois T et S pour faire en sorte que T peut être converti en S.