How to use 'goto' statement?
    20 ビュー (過去 30 日間)
  
       古いコメントを表示
    
I have the problem in the code segment:
if matchedRulesCount==0
        goto('N')
        return
    else
        goto('N1')
        return
    end
fprintf('Number of rules matched are:%d\n',matchedRulesCount);
%LABEL N    
disp('No rule is fired.');
%LABEL N1  
choice=input('Do yo want to try once more? \n0. For No.\n1. For yes. \n');
I get the following error
??? Undefined function or method 'goto' for input arguments of type 'char'.
0 件のコメント
採用された回答
  Jan
      
      
 2012 年 11 月 15 日
        if matchedRulesCount==0
  N;
else
  choice = N1;
end
return;
function N
disp('No rule is fired.');
function choice = N1  
choice=input('Do yo want to try once more? \n0. For No.\n1. For yes. \n');
It is a very good idea to avoid goto. It is even not a part of Matlab!
5 件のコメント
  K Vineeth Reddy
 2016 年 5 月 12 日
				
      編集済み: Walter Roberson
      
      
 2016 年 5 月 12 日
  
			this is not working in my machine.
"A nested function cannot be defined inside a control statement (if, while, for, switch or try/catch).
Be aware that in addition to this message, other messages might appear in the file. Such as, <control statement> might not be aligned with its matching END and Parse error at END: usage might be invalid MATLAB syntax. When you remove the nested function definition from the control statement, these other messages might disappear"
I am getting error like this.
その他の回答 (2 件)
  Ilham Hardy
      
 2012 年 11 月 15 日
        There is no
goto
function in matlab.
The only
goto
is a user-defined function (script) http://www.mathworks.ch/matlabcentral/fileexchange/26949-matlab-goto-statement
3 件のコメント
  Claudio
 2024 年 6 月 14 日
				as much as people thinks that "goto" is a beginner statement, it helps keeping down complexity and write cleaner code in certain scenarios, tha lack of it is appalling because it forces much more complex patterns where there is absolutely no need for.
It is as appalling as the lack of a finally in the try catch blocks
  Steven Lord
    
      
 2024 年 6 月 14 日
				tha lack of it is appalling because it forces much more complex patterns where there is absolutely no need for.
What examples of such scenarios do you have in mind? It's possible that there's a more efficient way to do what you're thinking about than the implementation you've thought of.
Just in my personal opinion:
Are there cases where having a goto statement in MATLAB could make certain operations easier? Likely, yes. But not, IMO, to the point of being "appalling". To my mind "appalling" is a pretty high bar and not having a feature that has been so hotly debated over multiple decades doesn't clear that bar.
Are there cases where code would be much, much more complicated if MATLAB had a goto statement? Likely, yes. Search MATLAB Answers for "eval" if you want to see how people can make things much more complicated by using a tool when it may not be necessary.
Does the benefit of introducing a goto statement in MATLAB outweight the potential cost (to MathWorks, to design / implement / test / document that statement, and to users who may misuse it to write convoluted code)? That's much less clear. [And no, "just do what other language X does" is not a design for the feature. MATLAB is not C. MATLAB is not C++. MATLAB is not Java, Fortran, Python, or any other language.]
It is as appalling as the lack of a finally in the try catch blocks
That seems like a reasonable enhancement request you could send to Technical Support directly using this link.
  Shruthi rajagopalan
 2013 年 4 月 6 日
        Hi, Can anyone please help me out with the below query: I want to use a goto statement inside if-else statement.How should i do that? I came across in mathworks that there is no goto in matlab.Only Continue and break is available for For loop and while loop alone. How should i jump to another statement when I am using If-Else Statement? Thanks! Shruthi
4 件のコメント
  Kenneth Lamury
 2016 年 7 月 12 日
				According to user-defined function (script) http://www.mathworks.ch/matlabcentral/fileexchange/26949-matlab-goto-statement, you might be using it wrong. Try the following:
for i = 1 : N
    statements;
    for j = 1 : M
        statements;
        if x > y
            goto(here);
            return %must have a return after the goto function
        end
    end
    statements;
    % LABEL here
end
Remember that it's goto('pointer','file') usage; 'file' is optional.
  Walter Roberson
      
      
 2016 年 7 月 12 日
				Without using the user contributed fake goto, you would use
for i = 1 : N
    statements;
    goto_here = false;
    for j = 1 : M
        statements;
        if x > y
            goto_here = true;
            break;
        end
    end
    if ~goto_here
      statements;
    end
    %here:
end
参考
カテゴリ
				Help Center および File Exchange で Call MATLAB from Python についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!










