是否有任何方式使用初始化列表可选在构造函数中初始化可选 参数?下面的示例诉诸如果(?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得到由初始化列表中再次初始化两次,一次为会员,然后。此外,成员初始值设定项的好处是可以是函数调用,而默认参数的默认值似乎需要常量。我希望/认识到性能影响很小。只需要一个很好的规范方法,可能用于代码生成。
虽然现在这个答案很好,但一定要检查最新的规范。据此:https://groups.google.com/a/dartlang.org/forum/?fromgroups#!topic/misc/vlWcc43EnL4 - “?运营商 吉拉德:我们可以摆脱它吗? 拉尔斯:是 吉拉德:好的,完成了。“ – 2013-05-17 13:26:40
谢谢。我将尝试了解这一变化并更新我的方法。这个想法是简单地初始化所有成员,甚至是昂贵的成员,只有一次。希望使用成员初始值设定项的新/更好的方法是可能的。 – user1338952 2013-05-17 13:38:18