これを行うよりも、オプションのパラメーターをある関数から別の関数に渡す簡単な (そしてよりクリーンな) 方法はありますか?
void optional1({num x, num y}) {
if (?x && ?y) {
optional2(x: x, y: y);
} else if (?x) {
optional2(x: x);
} else if (?y) {
optional2(y: y);
} else {
optional2();
}
}
void optional2({num x : 1, num y : 1}) {
...
}
私が実際に呼び出したいのは次のとおりです。
void drawImage(canvas_OR_image_OR_video, num sx_OR_x, num sy_OR_y, [num sw_OR_width, num height_OR_sh, num dx, num dy, num dw, num dh])
少なくとも、位置オプションのパラメーターの組み合わせ爆発は発生しませんが、多くの if-else よりも単純なものが必要です。
最初の回答で提案されたソリューションを使用するコードがいくつかあります (名前付きのオプションパラメーターのデフォルト値を伝播しますが、値が最初の呼び出し元によって提供されたかどうかを確認する機能を失います)。