Syntaxe dart: emploi de this ou non dans une classe

Bonjour,

Dans le cours de poo en dart, dans les classes Player et Bot
il est employé par exemple _strength à certains endroits et this.strength à d’autres,
pareil pour _nickname.
de même pour ${_weapon.name}, pourrait-on écrire indiféremment ${this._weapon.name}

ici, est-ce pour donner deux exemples employables indifféremment
ou bien existe-t’il en dart des spécificités, des limites liées à chacune de ces écritures svp ?

merci !

Hello @aem34

Je vais essayer de t’éclairer un peu.
this. permet de pointer sur une instance de ta class (autrement dit, une variable que tu auras déclarée dans ta class). Concrètement, this. représente l’objet instancié (autrement dit, ta class).

Mais du coup quand et comment l’utiliser ?
Souvent, this. sera utilisé lorsque tu vas définir tes setters (méthode qui te permet de définir une valeur à un objet).

Exemple :

class user{
    User? user;

  void setUser(User user) {
    this.user = user;
  }
}

Tu verras ça quand tu apprendras les Providers avec flutter.
(Un principe quasi indispensable avec flutter)

Une autre méthode où on utilise le this., c’est lorsqu’on veut créer une méthode qui sera directement affectée à l’élément en question.

Je t’explique avec un exemple.
Cette fonction permet de mettre la première lettre de l’élément que je désigne en majuscule.

Définition de la fonction :

String toCapitalize({bool eachWord = false}) {
    if (eachWord && this.contains(' ')) {
      String eachWordResult = '';
      List<String> wordsList = this.split(' ');

      wordsList.forEach((word) {
        eachWordResult += word._toCapitalize();
        if (word != word[word.length - 1]) eachWordResult += ' ';
      });
      return eachWordResult;
    }
    return this._toCapitalize();
  }

  String _toCapitalize() {
    return "${this[0].toUpperCase()}${substring(1).toLowerCase()}";
  }

Utilisation de la fcontion :

...
Text(
    "Mon nom est ${user.firstname.toCapitalize()}.",
),
...

Dans cette exemple, t’occupes pas de la logique de la fonction, mais regarde bien comment est utiliser le this.. Il fait référence à user.firstname autrement dit, le prénom de mon user aura une majuscule.

Mon nom est John.

J’espère que ces explications t’auront aidé :slight_smile:

1 « J'aime »