【发布时间】:2020-08-08 08:02:31
【问题描述】:
在构造函数的Dart language tour 中,它给出了生成构造函数的示例:
class Point {
double x, y;
Point(double x, double y) {
// There's a better way to do this, stay tuned.
this.x = x;
this.y = y;
}
}
稍后给出named constructor的示例:
class Point {
double x, y;
Point(this.x, this.y);
// Named constructor
Point.origin() {
x = 0;
y = 0;
}
}
这让我相信,当构造函数使用与类相同的名称时,它就是生成构造函数:
Point(this.x, this.y);
但是当有一个额外的标识符时,它就是一个命名构造函数:
Point.origin() {
x = 0;
y = 0;
}
然而,在另一个 my answers 上,一位 Dart 专家将我的“命名构造函数”的措辞改为“生成构造函数”。这让我意识到我可能误解了它们之间的区别。命名构造函数是生成构造函数的子集吗?如果是这样,我如何调用一个只有类名而没有附加标识符的构造函数?
language spec 中似乎没有术语“命名构造函数”。
【问题讨论】:
-
规范实际上做了mention“命名构造函数”,它只是没有指定它。规范没有区分,它只是说构造函数的名称要么是类名,要么是类名,后跟一个
.和一个标识符。短语“命名构造函数”通俗地用于那些名称带有尾随标识符的构造函数,因为它比“具有......某物的名称的构造函数”更容易说出来。
标签: dart constructor