我想知道为什么map1无法打印{a: 2, b: 3}
就像map2一样。
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 https://groups.google.com/a/dartlang.org/forum/#!topic/misc/iP5TiJMW1F8/discussion
但是,我不明白为什么它似乎不适用于前面的示例。
这是 DartPad 中的代码https://dartpad.dartlang.org/452f15102a2c52d10ce28ff9ebe445b2 https://dartpad.dartlang.org/452f15102a2c52d10ce28ff9ebe445b2