初期化リストを利用して、コンストラクターでオプションのパラメーターをオプションで初期化する方法はありますか?次の例では、本体にif(?x)タイプのロジックを使用しています。これは、_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が2回初期化されているように見えます。1回はメンバー用で、もう1回は初期化子リストによってです。また、メンバー初期化子の利点は、関数呼び出しである可能性があることですが、デフォルトパラメーターのデフォルト値には定数が必要なようです。パフォーマンスへの影響が小さいことを願っています。コード生成で使用される可能性が高い、優れた標準的なアプローチが必要です。