有什么方法可以利用初始化列表来可选地初始化可选
构造函数中的参数?下面的例子诉诸于if(?x)类型
正文中的逻辑,因为尚不清楚如何设置_x仅在初始化列表中
如果传入的话.
class Point {
double _x = 0.0;
double get x => _x;
double _y = 0.0;
double get y => _y;
Point(
{
double x,
double y
})
{
if(?x) { _x = x; }
if(?y) { _y = y; }
}
}
另一种方法是使用构造函数:
Point(
{
double x: 0.0,
double y: 0.0
}) : _x = x, _y = y
{
}
但随后您会重复自己(0.0 不止一处),看起来 _x 和 _y 被初始化了两次,一次为成员初始化,另一次由初始化列表初始化。此外,成员初始值设定项的一个好处是它可以是函数调用,而默认参数的默认值似乎需要常量。我希望/意识到性能影响很小。只是想要一个很好的规范方法,可能用于代码生成。
您可以使用以下方式在构造函数中初始化变量this
前缀,例如:
class PointA {
double _x;
double get x => _x;
double _y;
double get y => _y;
PointA({double this._x=0.0, double this._y=0.0});
}
class PointB {
final double x;
final double y;
Point({double this.x=0.0, double this.y=0.0});
}
void main() {
new PointA(_y:2.0);
new PointA(_x:3.0);
new PointA(_x:2.0, _y:3.0);
new PointB(y:2.0);
new PointB(x:3.0);
new PointB(x:2.0, y:3.0);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)