Parcours
/
Swift
Swift
/
Programme
/
Paramètres inout
Pa

Paramètres inout en Swift

1 exercice

À propos de Paramètres inout

Dans le corps d'une fonction, les paramètres sont traités comme des constantes, et non comme des variables ; toute tentative de modification de la valeur d'un paramètre provoque une erreur de compilation. Si une fonction souhaite modifier la valeur d'un paramètre, elle doit utiliser un paramètre in-out pour rendre cette mutabilité explicite.

Pour utiliser des paramètres in-out, un programmeur doit être sûr de trois choses :

  1. La définition de la fonction doit marquer explicitement les paramètres in-out en écrivant le mot-clé inout entre le : et le nom du type dans l'annotation de type du paramètre.
  2. La valeur transmise au paramètre in-out doit être déclarée comme une variable, et non comme une constante. De même, elle ne peut pas être un littéral.
  3. Le nom de la variable doit être précédé d'un & dans l'appel de la fonction, ce qui la marque explicitement comme modifiable.

Une fois cela fait, la fonction effectue une copie interne du paramètre in-out, la modifie comme indiqué dans le corps de la fonction, puis recopie la valeur modifiée dans la variable qui a été transmise au moment où la fonction se termine.

func updateVersion(_ record: inout (version: Int, title: String)) {
  record.version += 1
}

var dbRecord = (version: 2, title: "Exercism")
updateVersion(&dbRecord)

// dbRecord is now (3, "Exercism")
Il y a quelques règles supplémentaires à connaître concernant les paramètres _in-out_.

1.  À l'intérieur d'une fonction qui prend des paramètres _in-out_, il est interdit de référencer la variable qui a été transmise comme paramètre _in-out_.
2.  Une même variable ne peut pas être transmise comme plusieurs paramètres _in-out_ dans une même fonction. Par exemple, `inoutFunc(&mutVar, &mutVar)` provoque une erreur de compilation.
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Paramètres inout