Dart Grammatik Grundlagen 1-Klasse, Konstruktor

Grammatikgrundlagen

  • Darts Hauptfunktionsname ist void main () {} , Sie können auch Parameter hinzufügen, main (List args)

  • Variablen, Funktionen, Getter und Setter in Dart können unabhängig von der Klasse existieren, wobei die Hauptmethode ganz oben steht.

  • Die Modifikatoren in Dart sind standardmäßig öffentlich, und es gibt keine Modifikatoren wie public, private und protected.

    Das Hinzufügen eines Unterstrichs _ vor dem Bezeichner kann ihn privat machen. Wie folgt können Sie der Variablen eine Getter-Methode hinzufügen, um sie lesbar zu machen. Für öffentliche Mitgliedsvariablen gibt es standardmäßig implizite Setter und Getter. Die Definition der Getter-Methode: direkt im Bezeichner Fügen Sie get vor dem Zeichen hinzu und verwenden Sie den definierten Bezeichner direkt beim Aufruf.

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

调用时: A.speed
  • Darts Konstruktor kann keinen Funktionskörper haben, ähnlich wie der folgende:
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});
  • Objekterstellung
    Nach Dart 2 können Sie das neue Schlüsselwort weglassen. Wenn Sie eine Variable definieren, können Sie den Typ aufgrund von Typinferenz nicht schreiben
var bike = new Bicycle(2, 0, 1);
可简化为:
var bike = Bicycle(2, 0, 1);
  • Wenn Sie wissen, dass sich der Wert der Variablen nicht ändert, können Sie final anstelle von var verwenden
  • In Dart können einfache oder doppelte Anführungszeichen verwendet werden, um die Zeichenfolge String zu deklarieren
  • Sie können auf den Wert in Form von $ {Ausdruck} oder $ Variablenname wie Kotlin verweisen
  • Zu verwendender Einzelfunktionsausdruck => Pfeil
  • In Dart sind einige häufig verwendete Ausnahmeklassen integriert. Sie können auch eine Klasse so anpassen, dass sie von der Ausnahmeklasse erbt, oder Sie können eine Folge von Ausnahmeinformationen wie folgt direkt auslösen:
Shape shapeFactory(String type) {
  if (type == 'circle') return Circle(2);
  if (type == 'square') return Square(2);
  throw 'Can\'t create $type.';
}
  • Fabrikmuster in Dart

Das Factory-Muster bietet einige Vorteile gegenüber der direkten Objektinstanziierung: Sie können die Details der Instanziierung ausblenden, ein Unterklassenobjekt bereitstellen, das eine entsprechende Basisklasse zurückgibt, und Sie können ein vorhandenes Objekt verwenden, anstatt ein neues Objekt zu erstellen.

Dart verwendet das Schlüsselwort factory, um einen Factory-Konstruktor zu erstellen, der die Definition von Factory-Klassen vereinfacht:

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;
}
  • In Dart gibt es kein Schlüsselwort für die Schnittstelle , da alle Klassen eine Schnittstelle definieren (jede Klasse definiert eine Schnittstelle). Beim Erben einer Klasse wird das Schlüsselwort implements verwendet
  • Dart unterstützt die funktionale Programmierung. Allgemeine Operationen wie Sammlungen sind wie folgt:
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);
Veröffentlichte 82 Originalartikel · Gefällt mir 86 · Besuchen Sie 110.000+

Ich denke du magst

Origin blog.csdn.net/unicorn97/article/details/98079806
Empfohlen
Rangfolge