手続きか
Gosub から戻す、流れ制御命令文。
構文:
Return expression
記述:
Return は、手続きから戻るために、使います。
Return は、gosub からの戻りと、手続きからの戻りを意味するため、
Option Gosub と
Option Nogosub を使って、
Gosub サポートの有効・無効を指定することができます。
Gosub サポートを無効にすると、
Return は手続きからの戻りとして認識されます。
Gosub サポートを有効にすると、
Return は gosub からの戻りとして認識されます。
Return (手続きから)は、手続き内で使われ、手続きを終了するときに戻り値を使うことができます:
- Sub は戻り値を指定できません。Return は Exit Sub イディオムとほぼ同じです。
- Function では、Return は、関数の戻り値を指定しなければなりません。
Return expression は、Function = expression : Exit Function イディオムとほぼ同じです。
警告: 使用する出力ブランチが何であれ、戻り値は常に定義する必要があります。そうしないと、予期しない動作が発生する可能性があります。
例:
'' GOSUB & RETURN の例。"-lang qb" でコンパイルするか、下の例のように、"$lang" を使います。
'$lang:
"qb"
Print "Gosub に行こう!"
GoSub MyGosub
Print "Gosub から戻った!"
Sleep
End
MyGosub:
Print "Gosub の中!"
Return
'' 関数から、戻ります
Type rational '' 単純な有理数型
numerator As Integer
denominator As Integer
End Type
'' 2つの有理数型を掛けます
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 ) '' 有理数 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
Sleep
方言差:
-
-lang fb 方言では、Return は、いつも「手続きから戻る」ことを意味すます。
-
-lang qb 方言では、Return は、デフォルトで、「gosub から戻る」ことを意味します。Option Nogosub を使って変更した場合にかぎり、コンパイラは、Return が「手続きからの戻り」であると認めます。
-
-lang fblite 方言では、Return は、デフォルトで、「手続きから戻る」ことを意味します。Option Gosub を使って変更した場合にかぎって、コンパイラは、Return が、「gosubからの戻り」であると認めます。
QBからの違い:
参照: