通常、関数の定義に含めるステートメントの 1 つを使用して、関数に戻り値が代入されます。この戻り値は、呼び出し元に返されます。
構文は次のとおりです。
FunctionName = returnValue
returnValue は関数の先頭部の As dataType 節で指定されたデータ型です (スカラー値、Variant 型、またはオブジェクト参照)。
以下に例を示します。
Function Cubit(intArg%) As Double
' Return the cube of intArg%.
Cubit# = intArg% ^ 3
End Function
または
Function Left5(aString As String) As String
' Return the leftmost 5 characters of aString$.
Left5$ = Left$(aString$, 5)
End Function
関数で配列やリストが返されるようにできます。そのためには、関数の戻り値を Variant 型にする必要があります。Variant 型は、配列やリストを以下の例のように保持することができ、名前の配列を 1 つの形式 (名、空白、姓) で関数に渡します。その関数は、名前が異なる形式 (姓、カンマ、空白、名) で表示される別の配列を返します。
Dim myVariantVarV As Variant
Dim anArray(1 to 3) As String
Dim X As Integer
anArray$(1) = "Alex Smith"
anArray$(2) = "Elizabeth Jones"
anArray$(3) = "Martin Minsky"
Function SwitchNames(arrayOfNames() As String) As Variant
' Declare a local array variable to pass back to the
' application as the return value of SwitchNames.
' Performing the operation on arrayOfNames, which is
' passed by reference, would change anArray if
' arrayOfNames were the return value of the function.
Dim newArrayOfNames(1 to 3) As String
Dim tempArray(1 to 2, 1 to 3) as String
Dim aSpace As Integer
For X% = 1 to 3
' Locate the space that separates first name from
' last name in arrayOfNames, then extract everything
' before the space to tempArray, then extract
' everything after the space to the corresponding
' location in tempArray's second dimension.
aSpace% = Instr(arrayOfNames$(X%), " ")
tempArray$(1, X%) = Mid$(arrayOfNames$(X%), 1 , _
aSpace% - 1)
tempArray$(2, X%) = Mid$(arrayOfNames$(X%), aSpace% + 1, _
Len(arrayOfNames$(X%)))
Next
For X% = 1 to 3
newArrayOfNames(X%) = tempArray(2, X%) & ", " & _
tempArray(1, X%)
Next
SwitchNames = newArrayOfNames
End Function
MyVariantVarV = SwitchNames(anArray())
For X% = 1 to 3
print myVariantVarV(x%)
Next
' Output: Smith, Alex
' Jones, Elizabeth
' Minsky, Martin
For x% = 1 to 3
Print anArray(x%)
Next
' Output: Alex Smith
' Elizabeth Jones
' Martin Minsky
関数には、戻り値を代入するステートメントが含まれている必要はありません。関数を定義するときにステートメントを含めなければ、LotusScript® では、関数の先頭部で指定または暗示されたデータ型に適した既定の戻り値が関数に代入されます。既定値は、数値データ型の場合はゼロ、String 型の場合は空の文字列 ("")、Variant 型の場合は EMPTY、そしてオブジェクト参照の場合は NOTHING です。
以下に例を示します。
Dim anInt As Integer
Dim anotherInt As Integer
Function PrintCube(intArg%) As Integer
Print intArg% ^ 3
End Function
anInt% = CInt(InputBox$("Enter a number:"))
' Suppose the user enters 3.
anotherInt% = PrintCube%(anInt%)
' Output: 27
Print anotherInt%
' 0