gpt4 book ai didi

class - ":"在 dart 的类构造函数中意味着什么?

转载 作者:行者123 更新时间:2023-12-01 09:39:51 25 4
gpt4 key购买 nike

我正在阅读有关类的 dartlang.org 资源,他们注意到以下结构:

import 'dart:math';

class Point {
final num x;
final num y;
final num distanceFromOrigin;

Point(x, y)
: x = x,
y = y,
distanceFromOrigin = sqrt(pow(x, 2) + pow(y, 2));
}

我不太明白的是 Point Constructor 中的“:”以及为什么/何时应该使用它?

最佳答案

它启动“初始化列表”。

如果您有像 Point 类中那样的 final 字段,那么有不同的方法来初始化它们。

class Point {
final num x = 3;
...
}

class Point {
final num x;
constructor(this.x);
}

class Point {
final num x;
constructor(num x) : this.x = x * 3;
}

这行不通

class Point {
final num x = 3;
constructor(num x) {
this.x = x * 3;
}
}

因为无法从构造函数中修改 final 字段。

初始化程序列出了一种解决此限制的方法,同时仍符合有关对象初始化顺序的保证。它在构造函数体之前执行。这是一种在将传递的参数分配给最终字段并进行一些计算之前检查或修改(分配默认值)传递的参数的方法。

在初始化列表中使用 this 只允许分配给属性,但不能从中读取以防止访问尚未初始化的属性。

对 super 构造函数的调用也在初始化列表中完成,通常应该是列表中的最后一次调用。

class MyPoint extends Point {
constructor(num x) : super(x);
}

关于class - ":"在 dart 的类构造函数中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39136808/

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