Dart 有没有办法在函数中打包/解包参数(例如 Python)?
对于打包示例,能够像这样声明一个函数:
packArguments(*listOfArguments, **mapOfArguments) {
listOfArguments.forEach((arg) => print(arg));
mapOfArguments.forEach((key, val) => print("$key => $val"));
}
Run Code Online (Sandbox Code Playgroud)
然后这样做:
packArguments("I", "Put", "whatever", "I", "want, arg1: "A", arg2: 1);
Run Code Online (Sandbox Code Playgroud)
会显示:
I
Put
whatever
I
want
arg1 => A
arg2 => 1
Run Code Online (Sandbox Code Playgroud)
至于解包,能够做这样的事情:
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);
Run Code Online (Sandbox Code Playgroud)
目前不支持这一点,但您可以通过传递列表和地图来轻松打包自己:
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});
}
Run Code Online (Sandbox Code Playgroud)
https://dartpad.dartlang.org/98ed3a3b07a2cca049cde69ca50ca269