Оператор управления потоком для возврата из процедуры или
GoSub.
Синтаксис
Return [ expression ]
или
Return [ label ]
Описание
Return используется для возврата из процедуры или возврата из
GoSub.
Заявление
Return может означать
возвращение из gosub или возвращение из процедуры,
Option Gosub
и
Option Nogosub может
использоваться для включения и отключения поддержки
GoSub.
Когда поддержка
GoSub отключена,
тогда
Return признается как
возвращение из процедуры. Когда поддержка
GoSub
включена, тогда
Return , признается
как возвращение из gosub.
Return (из процедуры) внутри процедуры используется для выхода
из процедуры, возможно, с возвращаемым значением. В
Sub нельзя указать возвращаемое значение
возврата. В
Function, после
Return
необходимо указать его возвращаемое значение.
Return expression
примерно эквивалентно
Function = expression : Exit Function
идиома.
Return (из gosub) используется для передачи управления обратно в
заявление сразу же после предыдущего вызова
GoSub.
При использовании в комбинации с
GoSub,
возвращаемое значение не может быть указано. Если необязательный
label
указан , выполнение продолжается на указанной метке. Если
GoSub
не был сделан, возникает ошибка R
inTime, и
выполнение продолжается сразу после
Return.
GoSub всегда должна иметь
соответствующий оператор
Return. Если
Return
(из gosub) используется там, где не было вызова
GoSub,
генерируется
RinTime ошибка.
Пример
'' Пример GOSUB & RETURN , компилировать
с опцией "-lang qb" или использовать "$lang" как ниже
'$lang: "qb"
Print "Let's Gosub!"
GoSub MyGosub
Print "Back from Gosub!"
Sleep
End
MyGosub:
Print "In Gosub!"
Return
'' Возврат из функции (RETURN
и FUNCTION)
Type rational '' Простой
тип rational
numerator As Integer
denominator As Integer
End Type
'' Умножает два рациональных типа
Function rational_multiply( r1 As rational, r2 As rational ) As rational
Dim r As rational
'' умножить делители ...
r.numerator = r1.numerator * r2.numerator
r.denominator = r1.denominator * r2.denominator
'' ... и вернуть результат
Return r
End Function
Dim As rational r1 = ( 6, 105 ) '' определить
некоторые rational(ы) r1 и r2
Dim As rational r2 = ( 70, 4 )
Dim As rational r3
r3 = rational_multiply( r1, r2 ) '' умножить
и сохранить результат в r3
'' отобразить выражение
Print r1.numerator & "/" & r1.denominator; " * ";
Print r2.numerator & "/" & r2.denominator; " = ";
Print r3.numerator & "/" & r3.denominator
Различие диалектов
- В диалекте -lang fb , Return
всегда означает возврат из процедуры.
- В диалекте -lang qb , Return
означает возврат из gosub по умолчанию, если не изменялось с помощью Option Nogosub,
в этом случае компилятор распознает Return как возврат из
процедуры.
- В диалекте -lang fblite , Return
означает возврат из процедуры по умолчанию, если не изменялось с помощью Option Gosub,
в этом случае компилятор распознает Return как возврат из gosub.
Отличия от QB
- Нет, при использовании диалекта -lang qb.
См. также