MATLAB ドキュメンテーションでは、break
キーワードについて次のように説明しています。
break
for または while ループの実行を終了します。break ステートメントの後のループ内のステートメントは実行されません。- ネストされたループでは、break はそれが発生したループからのみ終了します。制御は、そのループの終わりに続くステートメントに渡されます。
(私の強調)
複数のネストされたループから抜け出したい場合はどうすればよいでしょうか? Java などの他の言語には、制御の流れを転送する場所を指定できるラベル付きの breakがありますが、MATLAB にはそのようなメカニズムがありません。
次の例を検討してください。
% assume A to be a 2D array
% nested 'for' loops
for j = 1 : n
for i = 1 : m
if f(A(i, j)) % where f is a predicate
break; % if want to break from both loops, not just the inner one
else
% do something interesting with A
end
end
% <--- the break transfers control to here...
end
% <--- ... but I want to transfer control to here
両方のループを終了する (MATLAB での) 慣用的な方法は何ですか?