Voyons maintenant une situation où un seul paramètre ne suffit plus. Il s'agit toujours d'afficher une ligne formée de motifs, mais cette fois deux éléments changent : à la fois la longueur de la ligne et aussi le motif qui la forme. Par exemple :
for colonne = 1 to 15 do print_string "*"; done; for colonne = 1 to 19 do print_string " -_- "; done;
En utilisant nb_colonnes
et motif
comme nom des paramètres, on a le corps de la fonction :
for colonne = 1 to nb_colonnes do print_string motif; done;
On va construire cette fonction à deux paramètres, de la même manière que lorsqu'il y avait un seul paramètre, à ceci près :
Dans notre exemple, cela donne :
let affiche_ligne_motif nb_colonnes motif = for colonne = 1 to nb_colonnes do print_string motif; done; in affiche_ligne_motif 15 "*"; affiche_ligne_motif 19 " -_- ";
On résume la gestion des fonctions à plusieurs paramètres en disant que :
Lorsqu'il y a plusieurs paramètres à une fonction, on les place simplement séparés par des espaces.
L'ordre des paramètres qui a été choisi est nb_colonnes
puis motif
. Mais ce choix est arbitraire, et l'ordre inverse fonctionne très bien également :
let affiche_ligne_motif motif nb_colonnes =
Seulement dans ce cas, il est nécessaire d'inverser aussi les paramètres lors des appels :
affiche_ligne_motif "*" 15; affiche_ligne_motif " -_- " 19;