Dart问题:
下面,为了显示(在我看来)“正常行为”,不显式设置键值对的值是不会更改的:

Map<String,String> mup = {};
mup['a']='fred';
var val = mup['a'];// val==fred
val = 'joe';
print(mup); // (a: fred} - unchanged
mup['a']=val; //set
print(mup); // (a: joe} - changed OK

一种奇怪的显示方式,但不足为奇。
但是,如果值是列表,则如果更改列表值,则会立即更新 map :

Map<String,List> mup = {};
mup['a']=[1,2,3,4,5,6];
var val = mup['a'];
val[1]=66;
print (mup);//{a: [1, 66, 3, 4, 5, 6]}

因此, mup 已更改,但未明确更改!这是怎么回事...请?

令我惊讶的是,我的初学者!

史蒂夫

最佳答案

var val = mup['a']返回对列表[1,2,3,4,5,6]的引用,而不是副本。
如果您对其进行修改,它也将反射(reflect)在 map 内的列表中,该列表实际上是同一列表。

基本上,您可以想像它是在盒子中看着相同的东西,但是是从两个不同的孔中看到的。

关于map - dart-映射值更改而未显式设置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26381334/

10-09 02:56