Assigner une valeur par défaut à un argument d'une fonction
(ou d'une méthode de classe) permet d'omettre un paramètre lors
l'appel de cette fonction.
La syntaxe complète de l'interface est:
type [,type]* nom(type nom [= expression] [, type nom [= expression]]*
)
ce que l'on détaillera ainsi:
- un ou plusieurs types de retour,
- le nom de la fonction,
- entre parenthèses, un ou plusieurs arguments de la forme chacun:
* type de l'argument
* nom de l'argument
* et en option, l'assignement d'une valeur...
Exemple de fonction avec un argument doté
d'une valeur par défaut.
Puis appel, avec un ou deux paramètres. |
int
increment(int x, int
y = 1)
x + y return x
print increment(10, 5) print increment(10) |
Affiche: |
>
15
> 11 |
Quand la fonction est appellée avec un seul paramètre,
la valeur par défaut 1 est utilisée pour remplacer le second paramètre
manquant.
Si l'interface d'une fonction a plusieurs arguments avec une valeur par
défaut, vous ne pouvez en omettre un lors de l'appel sans omettre tous
les suivants. Les arguments ne pourraient être identifiés par leur
type.
Utilisation d'une liste
Si ce que l'on veut, c'est une fonction ayant un nombre et des types de
paramètres variable, vous devez plutôt utiliser un tableau ou dictionnaire.
Exemple de fonction avec une liste en argument
L'appel de la fonction donne une liste en paramètre et le corps
de la fonction prend les argurments dans la liste. |
text
taille, nom, ville
void param(dict parlist)
taille = parlist["taille"]
nom = parlist["nom"]
ville = parlist["ville"]
return
dict d = dict("170",
"Untel", "Nice")
param(d) print taille, nom, ville |
Affiche: |
>
170 Untel Nice |
Dans cet exemple, les variables "taille", "nom", "ville" sont globales,
et elle sont assignées par le contenu du dictionnaire en argument.
Il est possible d'appeler la fonction avec un tableau de moins de deux
éléments, ce qui remplit le même rôle que l'emploi
d'arguments par défaut.
Pour que cet exemple soit parfait en fait, on devrait utiliser des assignements
conditionnels, au symbole d'assignement conditionnel :=
x := y
x est assigné par la valeur de y seulement si y n'est pas nil, ou si x
n'a jamais été assigné auparavant.
Dans la même fonction, on remplace
les assigements simples par des assignements conditionnels.
Seuls les éléments présents dans le tableaux
seront assignés. Les autres sont ignorés.
|
text
taille, nom, ville
void param(dict parlist)
taille :=
parlist["taille"]
nom :=
parlist["nom"]
ville :=
parlist["ville"]
return
dict d
d["taille"] = "170"
d["ville"] = "Nice"
param(d) print taille, nom, ville |
Affiche: |
>
170 Nice |
Exercices |
1) Soit une fonction affichant un texte et une valeur:
void nom(text x, int y)
print x, y
return
On veut que le paramètre x ait par défaut
la valeur "valeur=", réécrire la fonction
en conséquence.
Réponse |
|