有没有比这样做更简单(更干净)的方法将可选参数从一个函数传递到另一个函数:
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更简单的东西.
我有一些代码使用了第一个答案中提出的解决方案(传播命名可选参数的默认值,但我无法判断该值是否由初始调用方提供).