以下两个代码的输出相同,但是本质区别是什么?
A Tour of the Dart Language - Initializer list
import 'dart:math';
class Point {
final num x;
final num y;
final num distanceFromOrigin;
Point(x, y)
: x = x,
y = y,
distanceFromOrigin = sqrt(x * x + y * y);
}
main() {
var p = new Point(3, 4);
print(p.distanceFromOrigin);
}
我的代码
Point(this.x, this.y)
: distanceFromOrigin = sqrt(x * x + y * y);
两个输出都相同5。
最诚挚的问候,
答案 0 :(得分:2)
没有什么区别,除了可以利用不同类型的构造函数之外,结果将相同。
如果您不想公开在Point中定义的变量并将其标记为私有,那么初始化器将是一个不错的选择。
class Point {
final num _x;
final num _y;
final num _distanceFromOrigin;
Point(x, y)
: _x = x,
_y = y,
_distanceFromOrigin = sqrt(x * x + y * y);
}
还要看看带有可选参数或工厂构造函数的构造函数。