Return
 
Оператор управления потоком для возврата из процедуры или 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 не был сделан, возникает ошибка RinTime, и выполнение продолжается сразу после 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 fbReturn всегда означает возврат из процедуры.
  • В диалекте -lang qb , Return означает возврат из gosub по умолчанию, если не изменялось с помощью Option Nogosub, в этом случае компилятор распознает Return как возврат из процедуры.
  • В диалекте -lang fblite , Return означает возврат из процедуры по умолчанию, если не изменялось с помощью Option Gosub, в этом случае компилятор распознает Return как возврат из gosub.

Отличия от QB

  • Нет, при использовании диалекта -lang qb.

См. также