Dart Grammar Basics 1-Class, Constructeur

Les bases de la grammaire

  • Le nom de la fonction principale de Dart est void main () {} , vous pouvez également ajouter des paramètres, main (List args)

  • Les variables, fonctions, getters et setters dans Dart peuvent exister indépendamment de la classe, avec la méthode principale en haut.

  • Les modificateurs dans Dart sont publics par défaut, et il n'y a pas de modificateurs comme public, privé et protégé.

    L'ajout d'un trait de soulignement _ devant l'identifiant peut le rendre privé. Comme suit, vous pouvez ajouter une méthode getter à la variable pour la rendre lisible. Pour les variables membres publiques, il y a des setters et des getters implicites par défaut. La définition de la méthode getter: directement dans l'identifiant Ajoutez get avant le caractère et utilisez l'identifiant défini directement lors de l'appel;

int _speed = 0;
//通过修改其名称并添加一个getter,使private变量可读
int get speed => _speed;

调用时: A.speed
  • Le constructeur de Dart ne peut avoir aucun corps de fonction, semblable au suivant:
Bicycle(this.cadence, this.speed, this.gear);
其中this.cadence是简写,可以直接把参数赋值给成员变量,可选参数用{ }括起来,可以赋初始值,如下所示:
Bicycle(int cadence, int speed, int gear) {
  this.cadence = cadence;
  this.speed = speed;
  this.gear = gear;
}

Rectangle({this.origin = const Point(0, 0), this.width = 0, this.height = 0});
  • Création d'objet
    Après Dart 2, vous pouvez omettre le nouveau mot clé. Lorsque vous définissez une variable, vous ne pouvez pas écrire le type en raison de l'inférence de type
var bike = new Bicycle(2, 0, 1);
可简化为:
var bike = Bicycle(2, 0, 1);
  • Si vous savez que la valeur de la variable ne changera pas, vous pouvez utiliser final au lieu de var
  • Dans Dart, des guillemets simples ou doubles peuvent être utilisés pour déclarer la chaîne String
  • Vous pouvez vous référer à la valeur sous la forme de $ {expression} ou $ nom de variable comme Kotlin
  • Expression de fonction unique à utiliser => flèche
  • Dart possède des classes d'exception couramment utilisées, vous pouvez également personnaliser une classe pour hériter de la classe Exception, ou vous pouvez directement envoyer une chaîne d'informations d'exception, comme suit:
Shape shapeFactory(String type) {
  if (type == 'circle') return Circle(2);
  if (type == 'square') return Square(2);
  throw 'Can\'t create $type.';
}
  • Modèle d'usine à Dart

Le modèle d'usine présente certains avantages par rapport à l'instanciation d'objet directe: vous pouvez masquer les détails de l'instanciation; fournir un objet de sous-classe qui renvoie une classe de base correspondante; et vous pouvez choisir d'utiliser un objet existant au lieu de créer un nouvel objet; ...

Dart utilise le mot clé factory pour créer un constructeur d'usine afin de simplifier la définition des classes d'usine:

abstract class Shape {
  factory Shape(String type) {
    if (type == 'circle') return Circle(2);
    if (type == 'square') return Square(2);
    throw 'Can\'t create $type.';
  }
  num get area;
}
  • Il n'y a pas de mot clé d' interface dans Dart , car toutes les classes définissent une interface (chaque classe définit une interface), l'héritage d'une classe utilise le mot clé implements
  • Dart prend en charge la programmation fonctionnelle. Les opérations courantes telles que les collections sont les suivantes:
String scream(int length) => "A${'a' * length}h!";

main() {
  final values = [1, 2, 3, 5, 10, 50];
  //非函数式写法
  for (var length in values) {
    print(scream(length));
  }
}

//函数式写法
values.skip(1).take(3).map(scream).forEach(print);
A publié 82 articles originaux · J'aime 86 · Plus de 110 000 visiteurs

Je suppose que tu aimes

Origine blog.csdn.net/unicorn97/article/details/98079806
conseillé
Classement