9

から来てpython、私はそれを簡単に達成できることを知っています:

def someFunc(*args):
    for i in args:
        print i

そうすれば、100個の引数を簡単に与えることができます。

Dart でそのようなことを行うにはどうすればよいですか?

どうも。

4

3 に答える 3

3

クラスでメソッドを使用できますnoSuchMethod(おそらくメソッドと組み合わせて使用​​ できますcall()が、試したことはありません)。しかし、これを使用すると、ダーツ エディターのいくつかのチェック機能が失われるようです (少なくとも私にとっては)。

メソッドにはInvocation、メソッド名と名前のないすべてのパラメーターをリストとして、すべての名前付きパラメーターをハッシュマップとして含むパラメーターとしてインスタンスがあります。

との詳細については、こちらを参照してください。ただし、リンクには、マイルストーン 4 には適用されない古い情報が含まれています。変更については、こちらを参照してください。noSuchMethodcall()

このようなもの:

typedef dynamic FunctionWithArguments(List<dynamic> positionalArguments, Map<Symbol, dynamic> namedArguments);

class MyFunction
{
  final FunctionWithArguments function;

  MyFunction(this.function);

  dynamic noSuchMethod(Invocation invocation) {
    if(invocation.isMethod && invocation.memberName == const Symbol('call')) {
      return function(invocation.positionalArguments, invocation.namedArguments);
    }

    return;
  }
}

使用法:

class AClass {
  final aMethod = new MyFunction((p, n) {
    for(var a in p) {
      print(a);
    }
  });
}


var b = new AClass();

b.aMethod(12, 324, 324);
于 2013-04-28T13:02:53.950 に答える