Je suis en train d'apprendre Swift et je peux comprendre comment créer une fonction simple qui prend un tableau et renvoie un tableau. Heres mon code:
func myArrayFunc(inputArray:Array) -> Array{
var newArray = inputArray
// do stuff with newArray
return newArray
}
L'erreur rouge que je reçois est la suivante: La référence au type générique 'Array "nécessite des arguments dans <>
Dans Swift Array
est un type générique, vous devez donc spécifier le type array que contient. Par exemple:
func myArrayFunc(inputArray:Array<Int>) -> Array<Int> {}
Si vous voulez que votre fonction soit générique, utilisez:
func myArrayFunc<T>(inputArray:Array<T>) -> Array<T> {}
Si vous ne souhaitez pas spécifier le type ou utiliser une fonction générique, utilisez le type Any
:
func myArrayFunc(inputArray:Array<Any>) -> Array<Any> {}
Cela dépend de ce que vous voulez faire exactement. Si vous voulez une fonction spécialisée prenant un tableau d'un type spécifique MyType, vous pouvez écrire quelque chose comme:
func myArrayFunc(inputArray: [MyType]) -> [MyType] {
// do something to inputArray, perhaps copy it?
}
Si vous voulez une fonction de tableau générique, vous devez utiliser des génériques. Cela prendrait un tableau de type générique T et renverrait un tableau de type générique U:
func myGenericArrayFunc<T, U>(inputArray: [T]) -> [U] {
}
merci à tous (surtout Kirsteins). Donc, je viens avec cet exemple qui fonctionne bien et semble logique:
func myArrayFunc(inputArray:Array<String>) -> Array<String>{
var newArray = inputArray
// do stuff with newArray
return newArray
}
Une variable Array
n'existe pas dans Swift, mais il existe des tableaux d'un certain type. Vous devez donc donner à la fonction un type générique, comme dans:
func myArrayFunc<T>(inputArray:Array<T>) -> Array<T>{
// do what you want with the array
}
puis appelez-le en instanciant T sur un type spécifique et en passant un tableau de ce type.