gpt4 book ai didi

dart - 构造函数:将预处理的参数存储在传递给最终字段的辅助变量中

转载 作者:行者123 更新时间:2023-12-02 01:30:28 24 4
gpt4 key购买 nike

我想为我的 Circe 类提供一个替代构造函数,其中中心和半径是根据 3 个点计算的。但是我找不到将计算出的中心存储到时间变量并将其传递给两个最终字段的方法。调用 _getCenter 两次是可行的,但这种方法不是最优的。有没有更有效的方法?

import 'dart:math';

class Circle {
final Point center;
final double radius;

Circle(this.center, this.radius);

Circle.fromPoints(Point p1, Point p2, Point p3)
: center = _getCenter(p1, p2, p3),
radius = _getCenter(p1, p2, p3).distanceTo(p1);

static Point _getCenter(Point p1, Point p2, Point p3) {
...
}

最佳答案

您可以使用 factory constructor :

import 'dart:math';

class Circle {
final Point center;
final double radius;

Circle(this.center, this.radius);

factory Circle.fromPoints(Point p1, Point p2, Point p3) {
final center = _getCenter(p1, p2, p3);
final radius = center.distanceTo(p1);

return Circle(center, radius);
}

static Point _getCenter(Point p1, Point p2, Point p3) {
...
}
}

这种构造函数的要点是表现得像一个构造函数,但不会自动创建任何对象实例。然后,您必须返回一个与工厂构造函数所属的类兼容的对象。

关于dart - 构造函数:将预处理的参数存储在传递给最终字段的辅助变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73421999/

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