How to Share Data Between These Functions?
12 ビュー (過去 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.
A = open( 'C:\A.mat' )
A.B = 1;
A.C = 2;
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?
回答 (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.