How to Share Data Between These Functions?
5 次查看(过去 30 天)
显示 更早的评论
Imagine I have myfun1 that loads struct A from disk. I have other functions that should use some fields of A to do some calculations.
function myfun1
global A
A = open( 'C:\A.mat' )
end
function myfun2
global A
A.B = 1;
end
function myfun3
global A
A.C = 2;
end
What is the best solution to allow these functions have access to struct A? I thought of Global Variables, so I make struct A global and then use it wherever I want. Is there a safer and better solution?
0 个评论
回答(1 个)
Adam
2017-3-15
编辑:Adam
2017-3-15
You haven't given any code that calls the functions, but the whole point of functions (or at least one of the main points) is that they take input arguments into a sealed workspace and then provide output arguments. Make use of them - pass your variable as n output argument from myfun1 and then just pass in the variables you need to the other functions, either the full struct or even just certain fields of it. Having a vast amount of data all on one struct is not a good design in the first place so multiple collections of data are generally better.
Don't use global variables though, they are bad for so many reasons (just do a google search or a search on this forum for global variables to see the overwhelming opinion on them) and have no place in proper code design, especially when you can simply pass arguments to a function to achieve the same thing.
3 个评论
Steven Lord
2017-3-15
For sharing data among callback functions of graphics objects in particular, see the techniques described in this documentation page.
Jan
2017-3-15
+1 "Don't use globals" is a very valuable advice.
The topic is discussed frequently. Search in the forum for "share data between callbacks".
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!