Script Within a Script - Return
4 次查看(过去 30 天)
显示 更早的评论
I have a a situation where Script 1 calls Script 2 to perform a logic check. If this logic check fails, I want the entire program (Script 1 and Script 2) to stop. Obviously, the Return command will only stop Script 2, and Script 1 will continue to run to it's finish. Is there an elegant way to do this? A simplified code example is below.
%%SCRIPT_1
disp('Running Script 1');
Script_2 %%Call Script 2
disp('Still Running Script 1');
%%SCRIPT_2
happy = input('Do you want these scripts to continue running? y or n?');
if happy == 'y'
disp('Cool');
else
return
end
So, in this instance, even if you tell Script 2 'n', Script 2 will stop and then Script 1 will continue. I understand the code and why this occurs. What I would like is if you tell Script 2 'n', that Script 1 will stop as well.
4 个评论
Rik
2017-9-14
I still would as well. You can have a main m-file (which can still be a script), which just calls all necessary functions. With input parsing (functions like validateattributes, narginchk and the like) you can easily separate out cases. A shared workspace can cause bugs that are very hard to find.
Also, if my answer helped you, please mark it as accepted answer.
回答(1 个)
Rik
2017-9-12
use a second output for the inner function:
%%SCRIPT_1
disp('Running Script 1');
Script_2 %%Call Script 2
if ReturnFlag,return,end
disp('Still Running Script 1');
%%SCRIPT_2
ReturnFlag=false;
happy = input('Do you want these scripts to continue running? y or n?');
if happy == 'y'
disp('Cool');
else
ReturnFlag=true;
return
end
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Entering Commands 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!