gpt4 book ai didi

flutter - Dart 命名构造函数 vs 静态方法更喜欢什么?

转载 作者:行者123 更新时间:2023-12-03 02:49:38 26 4
gpt4 key购买 nike

所以在dart之后制造 new关键字可选,

我们可以用 初始化一个对象完全相同的语法但不同的内部实现 .

class Color {
int r = 0, g = 0, b = 0;

Color({this.r, this.b, this.g});

//Named constructors
Color.red() //Implementation

Color.cyan() //Implementation

// Static Initializers
static Color red() => //Initialze with parameter

static Color cyan() => //Initialze with parameter
}

我们可以像这样使用它们 不管 成为 named constructorstatic method :
Color red = Color.red();
Color cyan = Color.cyan();

使用它们的地方是什么?

最佳答案

实际上,工厂构造函数和静态方法之间几乎没有区别。

对于泛型类,它会更改您可以(并且必须)编写类型参数的位置:

class Box<T> {
T value;
Box._(this.value);
factory Box.withValue(this.value) => Box<T>._(value);
static Box<T> fromValue<T>(T value) => Box<T>._(value);
}
...
var box1 = Box<int>.withValue(1);
var box2 = Box.fromValue<int>(2);

因此,对于泛型类,工厂构造函数通常是您想要的。他们有最令人愉快的语法。

对于非泛型类,差别很小,所以主要是关于信号意图。并决定该名称在 DartDoc 中属于哪个类别。

如果函数的主要目标是创建一个新对象,请将其设为构造函数。

如果主要目标是进行一些计算并最终返回一个对象(即使它是一个新对象),请将其设为静态函数。
这就是为什么 parse方法通常是静态函数。

简而言之,做适合您的 API 的事情。

关于flutter - Dart 命名构造函数 vs 静态方法更喜欢什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62014117/

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