【发布时间】:2018-01-29 23:51:07
【问题描述】:
如果你能弄清楚如何重命名这个问题,我愿意提供建议。
在 Dart 语言中,可以编写一个带有 final 字段的类。这些字段只能在构造函数主体运行之前设置。这可以在声明中(通常用于类中的静态常量),在声明构造函数时使用初始化列表语法或使用this.field 速记:
class NumBox{
final num value;
NumBox(this.value);
}
假设我实际上需要对实例创建进行一些处理,并且不能只在构造函数之前初始化字段。我可以切换到使用带有 getter 的私有非最终字段:
class NumBox{
num _value;
NumBox(num v) {
_value = someComplexOperation(v);
}
num get value => _value;
}
或者我可以使用工厂构造函数获得类似的行为:
class NumBox{
final num value;
factory NumBox(num v) {
return new NumBox._internal(someComplexOperation(v));
};
NumBox._internal(this.value);
}
几年前我尝试学习 Dart 时遇到了类似的问题,现在我有更多的包袱,我仍然不知道。 有什么更聪明的方法来做到这一点?
【问题讨论】: