JSRUN 用代码说话

使用构造函数

编辑教程

使用构造函数

对象通过 构造函数 创建。 ClassName 或者 ClassName.identifier是构造函数的名字。 使用 Point 和 Point.fromJson() 构造函数创建 Point 对象如以下代码:

var p1 = Point(2, 2);
var p2 = Point.fromJson({'x': 1, 'y': 2});

以下效果相同的代码,构造函数前的 new 关键字是可选的:

var p1 = new Point(2, 2);
var p2 = new Point.fromJson({'x': 1, 'y': 2});

提示:new 关键字在 Dart 2 中变成了可选的。

常量构造函数由一些类提供了。用常量构造函数,在构造函数名前加 const 关键字,来创建编译时常量:

var p = const ImmutablePoint(2, 2);

编译时常量构造两个相同的会产生一个唯一的, 标准的实例:

var a = const ImmutablePoint(1, 1);
var b = const ImmutablePoint(1, 1);

assert(identical(a, b)); // 它们是同一个实例。

在 常量上下文 中, const 在构造函数或者字面量前可以省略。 例如,下面代码创建了一个 const 类型的 map 对象:

// 这里有很多的 const 关键字。
const pointAndLine = const {
  'point': const [const ImmutablePoint(0, 0)],
  'line': const [const ImmutablePoint(1, 10), const ImmutablePoint(-2, 11)],
};

全部省略只保留第一个 const 关键字:

// 仅有一个 const ,由该 const 建立常量上下文。
const pointAndLine = {
  'point': [ImmutablePoint(0, 0)],
  'line': [ImmutablePoint(1, 10), ImmutablePoint(-2, 11)],
};

省略了 const 关键字的常量构造函数在常量上下文之外, 此时创建的对象是非常量对象:

var a = const ImmutablePoint(1, 1); // 创建一个常量对象
var b = ImmutablePoint(1, 1); // 创建一个非常量对象

assert(!identical(a, b)); // 两者不是同一个实例!

提示:一个常量上下文中的 const 关键字在 Dart 2 中可以被省略。

JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟