Section 5.4

Valeurs par défaut

Un paramètre qui peut être omis, et la valeur qu'il prend quand on ne dit rien.

Un paramètre peut porter une valeur qu’il prendra si l’appel ne dit rien.

@entry(demarrer)
object MonProgramme {
    demarrer() {
        self.saluer(nom: "Simon Magus");
        self.saluer(nom: "Simon Magus", salutation: "Salut");
        self.saluer(nom: "Simon Magus", salutation: "Bonsoir");
    }

    saluer(nom: str, salutation: str := "Bonjour") {
        Console.print(text: $"{salutation}, {nom} !");
    }
}

Trois appels, une seule méthode, et le premier ne passe qu’un argument sur deux.

La valeur se pose dans la déclaration

saluer(nom: str, salutation: str := "Bonjour") {

C’est le := de la section 2.1, au même endroit que d’habitude : à droite, la valeur qu’on prend. nom reste obligatoire — l’appel doit le fournir. salutation devient facultatif : sans lui, la méthode travaille avec "Bonjour".

Un seul corps, donc, pour ce qui aurait demandé deux méthodes presque identiques. Et le défaut est écrit là où on le cherche : dans la signature, pas enfoui dans une ligne du corps.

Un paramètre facultatif se passe par son nom

Rien n’oblige à le nommer, mais tout y pousse. Un défaut se place presque toujours après les paramètres obligatoires, et vous savez depuis la section 1.2.1 qu’un argument positionnel qui suit un argument nommé est refusé (T027). Nommer le facultatif règle la question sans avoir à y penser :

self.saluer(nom: "Simon Magus", salutation: "Salut");

C’est aussi ce qui rend l’appel lisible. self.saluer("Simon Magus", "Salut") fonctionne, mais il faut connaître l’ordre des paramètres pour savoir lequel des deux textes est la salutation.

À vous

  • Retirez salutation: des deux derniers appels : trois « Bonjour » identiques.
  • Changez le défaut en "Salutations" et n’exécutez que le premier appel. Une seule ligne modifiée change tous les appels qui se taisaient.
  • Donnez un défaut à nom aussi, puis appelez self.saluer(); sans rien. Une méthode dont tous les paramètres ont un défaut s’appelle les mains vides.