3

给定以下结构:

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');

但是在 index 上写('A')('a')呢?

4

1 回答 1

4

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

如果您以后无法访问mapAand mapB,则必须使用临时变量进行修改,类似于上面的:

tmp = mapAB('A');
tmp('a') = 5;
% The following line is not necessary, since you're dealing with handle-objects:
% mapAB('A') = tmp;
于 2013-09-16T07:41:04.887 回答