How to NOT share variable with nested function?
8 views (last 30 days)
Show older comments
Hello,
I made a big code in a separate m.file, this code includes functions. I then want to make a function out of this big code, but, by doig so, i create nested functions and, as those function share the sames variable names, nothing is working properly anymore.
Is there a way to precise that the nested function inside a function should not share variables with the main function and with each other?
Thank you for your help!
Accepted Answer
Walter Roberson
on 12 Aug 2021
You took a script that was of the form
some code
function first
%something
end
function second
something
end
and you converted it to a function by putting a function line at the beginning and an end at the end of it, like
function do_stuff
some code
function first
%something
end
function second
something
end
end
What you should have done instead is
function do_stuff
some code
end %end HERE, not at bottom
function first
%something
end
function second
something
end
More Answers (2)
darova
on 11 Aug 2021
Edited: darova
on 11 Aug 2021
If you declare function or variable inside nested function it rewrites itself. There is no option for mistake
function main
a = 2;
b = 3;
a + b
function nest1
a = 5;
a + b
end
a + b
end
4 Comments
Stephen23
on 12 Aug 2021
"But why a value in main is changed?"
Shared variables are explained in the MATLAB documentation:
Jeff Miller
on 11 Aug 2021
It sounds like your "big code" is a script rather than a function, but now you want to make a function out of it.
I suggest you remove the functions from the "big code" script and put them in separate files. Then make "big code" into a function, but these other functions will no longer be nested so each will have its own separate variables.
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!