2017-03-16 7 views
2

関数内の引数をパック/アンパックする方法はありますか(Pythonなど)? についてはダーツの引数のパッキング/アンパック

は、このような関数を宣言することができるという、例を梱包:

packArguments(*listOfArguments, **mapOfArguments) { 
    listOfArguments.forEach((arg) => print(arg)); 
    mapOfArguments.forEach((key, val) => print("$key => $val")); 
} 

をしてから、このやって:

packArguments("I", "Put", "whatever", "I", "want, arg1: "A", arg2: 1); 

ます表示:については

I 
Put 
whatever 
I 
want 
arg1 => A 
arg2 => 1 

開梱、そのような何かを行うことができること:

functionWithLotOfArgument(a, b, c, d, e, {aa, bb = null, cc = null}) { 
    // do stuff 
} 
var argList = [1, 2, 3, 4, 5]; 
var argMap = {"aa": "haha", bb: "baby"}; 

functionWithLotOfArgument(*argList, **argMap); 

関連問題https://github.com/dart-lang/sdk/issues/29087

+0

現在サポートされていません。 –

+0

「現在」は計画中であることを意味しますか?メソッドが多くのパラメータを持つことができるFlutterを使用する場合、この機能を使用することは本当にうれしいでしょう。 – aelayeb

+0

私はそれが計画されているとは思っていませんが、彼らはより広範な変更に取り組んでおり、後で考えられるかもしれません。問題はhttps://github.com/dart-lang/sdk/issuesで確認できます。私は思うほとんどの機能は少なくとも1回はすでに提案されていると思います;-) –

答えて

3

これは現在サポートされていませんが、あなたは非常に簡単にリストに&マップを渡すことによって、自分自身をパックすることができます:

void packArguments(List listOfArguments, Map mapOfArguments) { 
    listOfArguments.forEach((arg) => print(arg)); 
    mapOfArguments.forEach((key, val) => print("$key => $val")); 
} 

void main() { 
    packArguments(['a', 3], {'arg1': 'a', 'arg2': 5}); 
} 

https://dartpad.dartlang.org/98ed3a3b07a2cca049cde69ca50ca269

関連する問題