您好,欢迎来到刀刀网。
搜索
您的当前位置:首页dart 命名构造函数

dart 命名构造函数

来源:刀刀网

在 Dart 中,命名构造函数是一种为类定义多个构造方法的方法,使你可以根据需要提供有意义的名称。这对于提高代码的可读性和灵活性非常有用,尤其是在需要不同的初始化过程时。 

class Point {
  double x, y;

  // 默认构造函数
  Point(this.x, this.y);

  // 命名构造函数
  Point.origin()
      : x = 0,
        y = 0;

  // 另一个命名构造函数
  Point.fromJson(Map<String, double> json)
      : x = json['x'] ?? 0,
        y = json['y'] ?? 0;
}

void main() {
  // 使用默认构造函数
  var p1 = Point(2, 3);
  print('p1: (${p1.x}, ${p1.y})');

  // 使用命名构造函数
  var p2 = Point.origin();
  print('p2: (${p2.x}, ${p2.y})');

  // 从 JSON 初始化
  var p3 = Point.fromJson({'x': 4, 'y': 5});
  print('p3: (${p3.x}, ${p3.y})');
}

Point(this.x, this.y) 是一种简洁的语法,称为构造函数参数初始化列表,用于在构造函数中直接初始化类的字段。等价于:

class Point {
  double x, y;

  Point(double x, double y) {
    this.x = x;
    this.y = y;
  }
}

这种初始化列表也可以与可选参数和默认值结合使用,以提高灵活性。例如:

class Point {
  double x, y;

  //x 和 y 都是可选参数,并且都有默认值 0
  Point([this.x = 0, this.y = 0]);
}

调用:

void main() {
  // 不传入任何参数,使用默认值
  var p1 = Point();
  print('p1: (${p1.x}, ${p1.y})'); // 输出: p1: (0.0, 0.0)

  // 传入一个参数,第二个参数使用默认值
  var p2 = Point(5);
  print('p2: (${p2.x}, ${p2.y})'); // 输出: p2: (5.0, 0.0)

  // 传入两个参数,覆盖默认值
  var p3 = Point(3, 4);
  print('p3: (${p3.x}, ${p3.y})'); // 输出: p3: (3.0, 4.0)
}

命名构造函数的主要用途包括:

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务