是否有任何方式使用初始化列表可選在構造函數中初始化可選 參數?下面的示例訴諸如果(?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