Valeur par default sur un paramètre d'une fonction

Bonjour tout le monde !

J’aurais une question curieuse … Je me pose la question de savoir s’il existe une différence entre

  bool myFunctionBool({bool params: true}) {return params;}

&

  bool myFunctionBool({bool params = true}) {return params;}

Je ne connais pas Flutter, mais à priori il existe une différence entre les deux fonctions.

La première a forcément besoin que le code appelant lui fournisse une valeur booléenne. Alors que la seconde peut fonctionner sans paramètre, grâce à la valeur par défaut. Cela permet d’alléger le code, et de rendre le programme plus lisible.

En flutter si on veut un paramètre obligatoire on le met hors des {}. Exemple

String myFunctionName(String name, {bool params: true}){
if (params){
  return name;
} else {
  return "Doe";
}

Ici le String est obligatoire et le params est optionnel. On peut l’appeler de deux façons.

String myName = myFunctionName("John");

ou

String myName = myFunctionName("John", params: false);

Le soucis c’est qu’on peut déclarer soit

String myFunctionName(String name, {bool params: true});

soit

String myFunctionName(String name, {bool params = true});

Est-ce qu’il y a une déclaration qui est fausse ou alors les deux sont correctes mais il y a une différences entre les deux ?

Maxime … HELP !!!

@mbritto ? Une idée ?

Si j’ai bien compris, il s’agit, lorsque tu mets. le signe égal, de fournir une valeur par défaut à un paramètre optionnel qui, bien qu’il soit optionnel, ne peut être null, alors que lorsque tu mets les deux points, tu fixes une valeur qui n’est pas par défaut, comme dans l’exemple suivant :

/// Sets the [bold] and [hidden] flags …
void enableFlags({bool bold = false, bool hidden = false}) {…}
// sans valeur par défaut ainsi imposée, null aurait été la valeur par défaut.
// bold will be true; hidden will be false.
enableFlags(bold: true);

Voilà.

1 « J'aime »

Suivant la documentation de Dart (lien ci-dessous).

Les : servent à donner le nom du paramètre lors de l’appel de la fonction.

NomDuParametre: valeur .

Et le = est bien pour assigner une valeur par défaut.

Donc, pour répondre à ta question avec le =, tu n’as pas besoin de donner de valeur, si la valeur par défaut te va. Alors, qu’avec les : tu es obligé de donner une valeur à chaque appel de fonction.

Exemple :

Déclaration

String myFunctionName(String name, {bool params: true});

Appel

myFunctionName(name, params: true) OK
myFunctionName(name) Erreur

Déclaration

String myFunctionName(String name, {bool params = true});

Appel

myFunctionName(name, params: true) OK
myFunctionName(name) OK mais params = true

2 « J'aime »

Ah d’accord, je comprend mieux ! J’avais jamais eu d’erreur de ce type jusqu’a maintenant donc je comprenais pas ce qu’il pouvait mal se passer.
Merci pour vos réponse @ThonyF & @fjacquemin, j’ai bien compris la différence et c’est bon à savoir !

???
Ce n’est pas ce que j’avais dit dans mon post ?

Ah pardon @Draken j’avais pas bien compris l’idée que tu as exprimé dans ta réponse. Toutes mes excuses ^^

Pas grave (remet le pistolet laser dans son étui)

2 « J'aime »