Я создал структуру, которая содержит поля и группу функций-дескрипторов.
Я инициализировал свою структуру, когда нажимаю кнопку в моем Matlab GUI, а затем продолжаю вызывать функции дескриптора, которые либо добавляют новые поля в мою структуру, либо обновляют поля по умолчанию.
Однако мне трудно увидеть изменения, несмотря на назначение структуры моей рабочей области, поскольку я хочу вызывать ее в других функциях для использования обновленных полей.
Я использовал assignin (ws, var, val) и evalin (ws, expression)
function struct = initialisedStruct(arg)
struct = struct ();
struct.a = arg;
struct.b = 1;
struct.run= {...
@aaaa,... %update some existed fields
@bbbb, ...%add here a new field call c. -> struct.c now exists.
@cccc,... %do something else
};
end
function [applyToStructure] = applyMethod(applyToStructure, handles)
for i = 1:length(handles)
[applyToStructure] = handles{i}(applyToStructure);
end
end
function clickOnThisButton(hObject, eventdata, handles)
input = 12;
struct = initialisedStruct(input);
applyMethodHandles(struct, struct.run); %modify the struct
assignin('base', 'struct', struct);
end
function clickOnAnotherButton(hObject, eventdata, handles)
myvar = struct.c; % here is my problem as it does not exist
end
Я ожидал, что после применения applyMethodHandles, которое перебирает каждый дескриптор, содержащийся в поле выполнения, и использует assignin, чтобы увидеть в рабочей области мою переменную struct со своими новыми полями.