Вызов метки на основе выражения
Синтаксис
On expression GoSub label1[, ...]
Описание
Ветвление на разные метки в зависимости от значения
expression.
Значение
expression 1 будет переходить на первую метку, значение 2 на
вторую, и т.д.. Если значение
expression является нулем (0) или
больше числа элементов в списке, выполнение продолжается на следующий
операторе после
On...Gosub.
Это заявление ведет себя так же, как
GoSub
и выполнение может возвращаться в заявлении
On...Gosub
используя
Return.
Рекомендуется структурированный условный оператор
Select Case
вместо
On...Gosub.
Пример
'' Компилировать с опцией -lang qb
'$lang: "qb"
choice = 3
On choice GoSub labela, labelb, labelc
Print "Good bye."
End
labela:
Print "choice a"
Return
labelb:
Print "choice b"
Return
labelc:
Print "choice c"
Return
Различия диалектов
Отличия от QB
- FreeBASIC не генерирует ошибку времени выполнения, если expression
является отрицательным или больше 255.
См. также