作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在带有可选参数的函数中,我想打印所有传入的参数,不仅是值,还有每个参数的标识符。例如,下面是一个带有可选命名参数的函数。我使用 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/
我是一名优秀的程序员,十分优秀!