How to Make a Huge Struct Accessible to Many Functions?
20 ビュー (過去 30 日間)
I have a huge struct loaded by a function. I have other functions that will use some of the fields of the struct to calculate something. What is the best way to make this struct accessible to all other functions? More info: this struct will only be read and no information by other functions will be overwritten on it.
Jan 2017 年 3 月 17 日
Avoid globals, because they impede the debugging and expanding of code.
If y struct is provided as input, only the struct pointer is copied, but Matlab does not duplicate the contents of the struct. Therefore it does not matter if the struct is huge or tiny. Forwarding the struct as an input will work efficiently. As long as you do not reply the struct as output, there is no danger of changing its contents "by accident".
But Adam's objection is correct in general: Providing all information to all subfunctions seems to be a bad design. If the code is large and written by multiple programmers, a modification of this struct will be dangerous, because it is hard to check, which functions are effected. The less data are forwarded, the less side-effects must be checked for modifications. Or in other words: The leaner the code, the less chances to fail.
Phew, don't ask me for a proof :-)
その他の回答 (2 件)
KSSV 2017 年 3 月 17 日
Read about global. Make your structure a global variable, hence you can access in any function without sending into the function.