https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html
Paramètres d'entrée-sortie
Les paramètres de fonction sont des constantes par défaut. Tenter de modifier la valeur d'un paramètre de fonction à partir du corps de cette fonction entraîne une erreur de compilation. Cela signifie que vous ne pouvez pas modifier la valeur d'un paramètre par erreur. Si vous souhaitez qu'une fonction modifie la valeur d'un paramètre et que vous souhaitez que ces modifications persistent après la fin de l'appel de fonction, définissez ce paramètre comme paramètre d'entrée-sortie à la place.
Vous écrivez un paramètre in-out en plaçant le mot clé inout juste avant le type d'un paramètre. Un paramètre d'entrée-sortie a une valeur qui est transmise à la fonction, est modifiée par la fonction et est renvoyée hors de la fonction pour remplacer la valeur d'origine. Pour une discussion détaillée du comportement des paramètres d'entrée-sortie et des optimisations associées du compilateur, consultez Paramètres d'entrée-sortie.
Vous ne pouvez passer une variable que comme argument d'un paramètre d'entrée-sortie. Vous ne pouvez pas passer une constante ou une valeur littérale comme argument, car les constantes et les littéraux ne peuvent pas être modifiés. Vous placez une esperluette (&) directement avant le nom d'une variable lorsque vous la transmettez comme argument à un paramètre d'entrée-sortie, pour indiquer qu'elle peut être modifiée par la fonction.
REMARQUE
Les paramètres in-out ne peuvent pas avoir de valeurs par défaut et les paramètres variadiques ne peuvent pas être marqués comme inout.
Voici un exemple de fonction appelée swapTwoInts ( : :), qui a deux paramètres entiers d'entrée-sortie appelés a et b:
func swapTwoInts(_ a: inout Int, _ b: inout Int) {
let temporaryA = a
a = b
b = temporaryA
}
La fonction swapTwoInts ( : :) permute simplement la valeur de b en a et la valeur de a en b. La fonction effectue cette permutation en stockant la valeur de a dans une constante temporaire appelée temporaireA, en affectant la valeur de b à a, puis en affectant temporaireA à b.
Vous pouvez appeler la fonction swapTwoInts ( : :) avec deux variables de type Int pour échanger leurs valeurs. Notez que les noms de someInt et anotherInt sont précédés d'une esperluette lorsqu'ils sont passés à la fonction swapTwoInts ( : :):
var someInt = 3
var anotherInt = 107
swapTwoInts(&someInt, &anotherInt)
print("someInt is now \(someInt), and anotherInt is now \(anotherInt)")
// Prints "someInt is now 107, and anotherInt is now 3"
L'exemple ci-dessus montre que les valeurs d'origine de someInt et anotherInt sont modifiées par la fonction swapTwoInts ( : :), même si elles ont été définies à l'origine en dehors de la fonction.
REMARQUE
Les paramètres d'entrée-sortie ne sont pas les mêmes que le renvoi d'une valeur à partir d'une fonction. L'exemple swapTwoInts ci-dessus ne définit pas de type de retour ou ne renvoie pas de valeur, mais il modifie toujours les valeurs de someInt et anotherInt. Les paramètres d'entrée-sortie sont une autre façon pour une fonction d'avoir un effet en dehors de la portée de son corps de fonction.
public func getQuestionList(inout language: String) -> NSArray