gpt4 book ai didi

arguments - 如何在 Dart 中访问或迭代参数

转载 作者:行者123 更新时间:2023-12-03 03:09:04 26 4
gpt4 key购买 nike

在带有可选参数的函数中,我想打印所有传入的参数,不仅是值,还有每个参数的标识符。例如,下面是一个带有可选命名参数的函数。我使用 map 实例打印出 arg 名称及其值,这就是我所需要的。

Map temp = new Map();

argumentTest({String a, String b, String c: "DDD"}){
if (a != null) {
temp.addAll({"a":a});
}

if (b != null) {
temp.addAll({"b":b});
}

if (c != null) {
temp.addAll({"c":c});
}
}

void main() {
argumentTest(a:"AAA");
print('$temp'); //{a: AAA, c: DDD}

}

虽然丑陋,但它有效。但是,有没有什么东西看起来像;

Map temp = new Map();

argumentTest({String a, String b, String c: "DDD"}){
arguments.forEach((arg) => temp.addAll({"arg": arg}));
}

void main() {
argumentTest(a:"AAA");
print('$temp'); //of course, not working.
}

谢谢大家。

最佳答案

您可以简化解决方法

Map temp = new Map();

argumentTest({String a, String b, String c: "DDD"}) {
({'a': a, 'b': b, 'c': c}).forEach((k, v) {
if(v != null) temp[k] = v;
});
}

要支持不同于null 的默认值,您需要扩展一点——例如

argumentTest({String a, String b, String c: "DDD"}) {
({
'a': [a, null], 'b': [b, null], 'c': [c, "DDD"]
}).forEach((k, v) {
if(v[0] != v[1]) temp[k] = v[0];
});
}

关于arguments - 如何在 Dart 中访问或迭代参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25833421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com