Can sections be skipped with something similar to "return" or "continue"?
35 次查看(过去 30 天)
显示 更早的评论
In MatLab live scripts one can split the code into sections. This may be for a visual overview and also allows for running just a specific section at a time instead of the entire code.
I would like to ask if this sectioning is more than visual and practical but also recognizable by the code itself - can the code e.g. treat a section in the same manner as, say, a loop or a function? If so, can a section be skipped by a command similar to what commands such as return or continue do?
So, the question in short is: Is there a way to skip an entire section if a condition is met? Something like:
if ~toggle; _skip this section_; end
Skipping the rest of a function or loop is easy with e.g.:
if ~toggle; return; end
and I am looking for this similar feature for skipping a section. I am asking if this is possible before wrapping an entire section in an if-statement.
0 个评论
回答(1 个)
Jared MacDonald
2020-5-4
Hi Steeven,
There is currently no way to skip a section other than writing a conditional. This is an intriguing suggestion, though, and we've made a note of it.
Thanks,
Jared
4 个评论
John D'Errico
2020-5-4
编辑:John D'Errico
2020-5-4
Personally, I think the idea of a branch to skip some section, jumping to a new location down in the code is a bad idea. This just creates a goto. It helps, even encourages the user to write spaghetti code, when a perfectly reasonable solution already exists. (Please don't bring MATLAB back into the bad old days of spaghetti fortran code, when we could jump up, down, back and forth at random.)
So, if they might wish to do something like this:
skip if question is true, to line labeled X
STUFF
X: branch location
then we already have the solution in the form of an if clause:
if question
STUFF
end
There is absolutely no need for a new construct allowing the user to perform a branch to some line label, skipping "stuff".
An even better way to write code like that is to use functions of course. Sean alludes to one way to implement something, by using the editor to hide code. That can also be done using a function to "hide" the offensive code, by putting it all inside a function. Thus we could put stuff into a function. I'll call my function STUFF, whether it be a nested function, a sub-function, an m-file, whatever. Now our code looks much cleaner (though hopefully with a more intelligently chosen name than my uncreative choice of the name STUFF.)
if question, STUFF, end
Sean de Wolski
2020-5-4
I agree John. And the refactor capability added a few releases ago to the live editor makes it even easier to convert something to a local or separate file function!
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Function Creation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!