戻り値を関数に代入する

通常、関数の定義に含めるステートメントの 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