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/