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
相关产品推荐
相关产品推荐

