Вот список языков с Java-подобными метками;т.е. возможность ветвления из помеченного оператора или блока.
- Java
- Javascript
- C # - C # поддерживает
goto <label>
, но не break <label>
или continue <label>
. - Ada - используя оператор
exit <label>
. - PL / SQL - с использованием операторов
exit <label>
или continue <label>
.
Вот список языков с более общей конструкцией GO TO (или эквивалентной), позволяя приложению переходить на любую метку на том же синтаксическом или внешнем уровне.
- Pascal
- FORTRAN - FORTRANтакже имеет «вычисленное goto», в котором целевая метка выбирается во время выполнения, и «назначенное goto», которое является формой самоизменяющегося кода.
- COBOL
- C
- C ++
Многие языки (также) поддерживают выброс и перехват исключений.Это можно рассматривать как обобщенную форму перехода к метке.Однако есть два важных различия:
- «Точка выброса» не указывает местоположение, которое будет перехватывать исключение (т. Е. Метку).
- Поток управления может выходить изтекущий вызов процедуры / функции / метода.
( Ruby's throw / catch
, похоже, имеет аспекты обычной обработки исключений и помеченных операторов. Однако я склонен думать, что сметка не нуждается в лексической области видимости, это наиболее близко к обычной обработке исключений.)
пожалуйста, добавьте больше.