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 件のコメント
Stephen23
2017 年 9 月 13 日
編集済み: Stephen23
2017 年 9 月 13 日
"...would you still suggest using functions instead?"
Yes, always.
Scripts are for playing around with a new idea, but are not suitable for any serious, repeatable, robust code. The shared workspace of scripts is a nightmare. Avoid them as much as you can.
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!