为什么我的结构变量不包含我的句柄函数应用的更改
why my structure variable does not contain the changes applied by my handle functions
我创建了一个包含字段和一组句柄函数的结构。
当我从我的 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
在应用循环遍历 运行 字段中包含的每个句柄并使用 assignin 的 applyMethodHandles 后,我预计会在工作区中看到我的结构变量及其新字段。
您没有获取函数的输出。 matlab中没有引用,需要复制新修改的结构。
而不是:
applyMethodHandles(struct, struct.run); %modify the struct
做:
struct=applyMethodHandles(struct, struct.run); %modify the struct
此外,struct
是您可以选择的最糟糕的名称。糟糕的编程不仅因为它只字不提它是什么,而且你在掩盖 MATLABs struct
的名字,所以它不能使用它。我强烈建议更改名称。
我创建了一个包含字段和一组句柄函数的结构。 当我从我的 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
在应用循环遍历 运行 字段中包含的每个句柄并使用 assignin 的 applyMethodHandles 后,我预计会在工作区中看到我的结构变量及其新字段。
您没有获取函数的输出。 matlab中没有引用,需要复制新修改的结构。
而不是:
applyMethodHandles(struct, struct.run); %modify the struct
做:
struct=applyMethodHandles(struct, struct.run); %modify the struct
此外,struct
是您可以选择的最糟糕的名称。糟糕的编程不仅因为它只字不提它是什么,而且你在掩盖 MATLABs struct
的名字,所以它不能使用它。我强烈建议更改名称。