我正在寻找一种在DART中创建具有可变数量的参数或参数的函数的方法.我知道我可以改为创建一个数组参数,但我不愿意这样做,因为我正在处理一个语法简洁很重要的库.

例如,在纯JavaScript中,我们可以这样做(borrow here):

function superHeroes() {
  for (var i = 0; i < arguments.length; i++) {
    console.log("There's no stopping " + arguments[i]);
  }
}

superHeroes('UberMan', 'Exceptional Woman', 'The Hunk');

但是,在DART中,代码不会运行.有没有办法在dart 里做同样的事情?如果不是,这是路由图上的内容吗?

推荐答案

你现在不能这么做.

我真的不知道varargs是否会回来——他们几次前还在那里,但是have been removed.

然而,可以用Emulating functions模拟varargs.请参阅下面的代码片段.

typedef OnCall = dynamic Function(List arguments);

class VarargsFunction {
  VarargsFunction(this._onCall);
  
  final OnCall _onCall;

  noSuchMethod(Invocation invocation) {
    if (!invocation.isMethod || invocation.namedArguments.isNotEmpty)
      super.noSuchMethod(invocation);
    final arguments = invocation.positionalArguments;
    return _onCall(arguments);
  }
}

main() {
  final superHeroes = VarargsFunction((arguments) {
    for (final superHero in arguments) {
      print("There's no stopping ${superHero}");
    }
  }) as dynamic;
  superHeroes('UberMan', 'Exceptional Woman', 'The Hunk');
}

Dart相关问答推荐

有什么区别!并且 ! 在 Dart 中?

Flutter 网页打开网址并获取数据

在Flutter中重命名文件/图像

Flutter - 可以在没有 Firebase 的情况下使用 Google 登录吗?

那么在 Flutter 中缓存最简单的方法是什么?

try 部署到 Google AppEngine 时出现 Dev_appserver.py 错误

错误:非抽象类InternalSelectableMathState

如何在仍然引用来自 pub.dartlang.org 的包的同时运行私有 pub 服务器?

Flutter 屏幕尺寸计算

谷歌dart Regions?

在小部件上显示对话框

如何导入文件夹中的所有文件?

如何在 Dart 中创建 StreamTransformer?

如何在 Dart 中获取字符串的字节数?

如何在 Dart 中将 UTF-8 字符串转换为字节数组?

Dart vs Polymer vs Bootstrap

Exception: Concurrent modification during iteration: Instance(length:17) of '_GrowableList';

如何使用 Dart 构建枚举?

Dart 中的函数类型定义(typedefs)/函数类型别名(function-type aliases)是什么?

Dart中var和dynamic类型的区别?