How to NOT share variable with nested function?
조회 수: 4(최근 30일)
표시 이전 댓글
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!
채택된 답변
Walter Roberson
2021년 8월 12일
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
추가 답변(2개)
darova
2021년 8월 11일
편집: darova
2021년 8월 11일
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
Stephen23
2021년 8월 12일
"But why a value in main is changed?"
Shared variables are explained in the MATLAB documentation:
Jeff Miller
2021년 8월 11일
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
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!