gpt4 book ai didi

dart - 冒号 : in Dart constructor syntax

转载 作者:IT王子 更新时间:2023-10-29 06:57:09 36 4
gpt4 key购买 nike

class X extends Y {
X(int a, int b) : super(a,b);
}

谁能给我解释一下冒号:的语法含义?

最佳答案

Dart 中的此功能称为“初始化列表”。
它允许您初始化类的字段、进行断言 并调用 super 构造函数。

这意味着它与构造函数体不同。正如我所说,您只能初始化 变量并且只能访问static 成员。您不能调用任何(非静态)方法。

好处是您还可以初始化 final 变量,这是您不能在构造函数主体中执行的操作。您还可以访问所有传递给构造函数的参数,而直接在括号中初始化参数时您没有这些参数。
此外,您可以在赋值的左侧使用与引用参数的右侧参数同名的类字段。 Dart 将自动使用左侧的类字段。
这是一个例子:

class X {
final int number;

X(number) : number = number ?? 0;
}

上面的代码将名为 number 的参数分配给 final 字段 this.number 如果它不是-null,否则分配 0。这意味着赋值的左侧 number 实际上指的是 this.number。现在,您甚至可以做出一个永远不会失败的断言(因此是多余的,但我想解释一下一切是如何协同工作的):

class X {
final int number;

X(number): number = number ?? 0, assert(number != null);
}

Learn more .

关于dart - 冒号 : in Dart constructor syntax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56036526/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com