【发布时间】:2018-10-01 19:20:19
【问题描述】:
我想知道为什么 map1 无法像 map2 那样打印 {a: 2, b: 3}。
void main() {
Map<String, int> myMap1 = {"a": 1, "b": 2};
Map<String, int> myMap2 = {"a": 1, "b": 2};
print("before: $myMap1 , $myMap2"); // before: {a: 1, b: 2} , {a: 1, b: 2}
upgradeAndSetEqual(myMap1);
myMap2 = upgradeAndReturn(myMap2);
print(" after: $myMap1 , $myMap2"); // after: {a: 1, b: 2} , {a: 2, b: 3}
}
void upgradeAndSetEqual(Map<String, int> toUpgrade) {
toUpgrade = toUpgrade.map((key, val) {
val += 1;
return new MapEntry(key, val);
});
}
Map<String, int> upgradeAndReturn(Map<String, int> toUpgrade) {
return toUpgrade.map((key, val) {
val += 1;
return new MapEntry(key, val);
});
}
我试图找出 Dart 是按引用传递还是按值传递并找到了这个。 https://groups.google.com/a/dartlang.org/forum/#!topic/misc/iP5TiJMW1F8/discussion
但是,我不明白为什么它似乎不适用于前面的示例。
这是 DartPad 中的代码 https://dartpad.dartlang.org/452f15102a2c52d10ce28ff9ebe445b2
【问题讨论】:
标签: dart