You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart技术问题:如何优雅调用参数数量可变的函数变量

优雅处理任意参数数量的函数统一测试

Dart内置的Function.apply方法刚好能解决你的问题——它可以动态调用任意函数并传入参数列表,不管函数需要0个、1个还是多个参数,都能统一处理,不用再写一堆分支判断。

修改后的代码如下:

final funcs = {
  printer.getStatus: [],
  printer.setPrintAreaSizeParams: [printAreaSizeParams],
};

for (final funcEntry in funcs.entries) {
  test('not connected ${funcEntry.key}', () {
    expect(
      () async => Function.apply(funcEntry.key, funcEntry.value),
      throwsA(isA<InvalidConnectionStateException>()),
    );
  });
}

为什么这能行?

Function.apply的作用就是把函数和参数列表绑定起来执行:

  • 第一个参数是你要调用的目标函数
  • 第二个参数是该函数需要的参数组成的列表,空列表对应无参函数,单元素列表对应单参函数,多元素列表对应多参函数

这样后续不管新增多少个不同参数数量的函数,只需要在funcs里添加上函数和对应的参数列表就行,测试逻辑完全不用改,扩展性拉满。

内容的提问来源于stack exchange,提问作者luiges90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 15:13:19