鉴于以下结构:
mapA=containers.Map('a', 1);
mapB=containers.Map('b', 2);
mapAB = containers.Map({'A', 'B'}, {mapA, mapB});
如何更改以下位置的值:
mapAB('A')('a')
? mapAB('A')('a')
给出错误:Error: ()-indexing must appear last in an index expression.
阅读可以这样做:
p=mapAB('A');
p=p('a');
但是在索引
('A')('a')
上写呢? 最佳答案
container.Map 对象是句柄类,因此要在您的示例中更改 mapAB('A') 您还可以修改 mapA:
mapA=containers.Map('a', 1);
mapB=containers.Map('b', 2);
mapAB = containers.Map({'A', 'B'}, {mapA, mapB});
mapA('a') = 3;
tmp = mapAB('A');
disp(tmp('a')); % will print 3
如果您以后无法访问
mapA
和 mapB
,则必须使用临时变量进行修改,类似于上述:tmp = mapAB('A');
tmp('a') = 5;
% The following line is not necessary, since you're dealing with handle-objects:
% mapAB('A') = tmp;
关于matlab - 在 Matlab 中索引 map ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18822517/