Calling a function defined in a m-file from within appdesigner app, with the app object as function input
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Lucademicus
el 20 de Dic. de 2019
Comentada: Rik
el 20 de Dic. de 2019
I'm using R2019b.
I have created a GUI app using appdesigner and have written the function testFun in a m-file (testFun should also be usable by a non GUI approach, hence the m-file).
Within the app, I have declared a public property called someData:
properties (Access = public)
someData = '';
end
From within the GUI app, testFun is called with app as a function argument:
testFun(app)
testFun is defined as follows:
function testFun(inputData)
inputData.someData = 'hello world';
end
As you can see, there are no output arguments defined in testFun.
Yet when I run the app like this, the someData property gets the value 'hello world'.
How can this behavior be explained?
0 comentarios
Respuesta aceptada
Rik
el 20 de Dic. de 2019
Editada: Rik
el 20 de Dic. de 2019
Your GUI (like all AppDesigner GUIs) has a pass-by-reference behavior (so it behaves like a handle class). That means the line you show modifies the original object, instead of creating a new one when the function is called.
You could create a GUI that doesn't work this way by using the normal figure class, so what is generally meant by a 'programmatic GUI', or GUIs created with GUIDE. For an overview of your options for GUI design, see this. For more information about pass-by-reference vs pass-by-value, see Comparison of handle and value classes in the documentation.
8 comentarios
Rik
el 20 de Dic. de 2019
I don't know what the designer code equivalent would be in Matlab, but you could make a programmatic GUI based on a class instead of functions. That way you would have a text file for Git to work with.
But I'm not sure if that actually solves the issue, since you leave the AppDesigner to do this.
Más respuestas (0)
Ver también
Categorías
Más información sobre Source Control en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!