Skip to content

Return

One of the new features of VoltScript is the Return statement. This statement immediately ceases operation of any method (Sub, Function, or Property) and returns to the calling code. If the method is supposed to return a value (such as with a Function or a Property Get), the value which is returned to the calling code will be the value following the return statement. If no value follows the return statement, then the value that is returned will be the default value for the method's return data type. ("" for Strings, 0 for Integers, etc). If the metod's return type is an object, then a no-value return statement will return Nothing.

Info

In LotusScript the way to break out of a sub or function is Exit Sub or Exit Function. In a function, the way to return a value is FUNCTION_NAME =, prepended with Set if the function returns an object.

For VoltScript, the LotusScript syntax will still work. But you can also use the Return statement. This is designed to simplify the code and make it more consistent with other languages, including Visual Basic.

Subs and Setter Properties

Return in a Sub or Setter Property will stop processing and exit the Method.

Sub printMessage(msg as String)
    If msg = "" Then Return
    Print msg  ' << this line will never execute!!
End Sub  

Property Set Message(msg As String)
    Return 
    Me.message = msg  ' << this line will never execute!!
End Poperty 

A sub does not return a value, so you cannot pass a value or variable to the Return statement.

Functions and Getter Properties

In these methods, Return will work the same as Exit Function or Exit Property, by aborting processing and returning the default value for the method's datatype.

Function incrementCounter(counter as Integer) as Integer
    Try
        Return ++counter
    Catch
        Return  ' If incrementing counter causes an Overflow error
    End Try
End Function  

Property Get myTypeName As String 
    Return TypeName(Me) ' returns the TypeName of the carrying class

    myTypeName = TypeName(Me)  ' << this line will never execute!!
End Property 

Property Get noTypeName As String 
    Return ' returns an empty string

    noTypeName = |no type name|  ' << this line will never execute!!
End Property 

For functions, the Return statement can also take a value or variable to return. Set does not need to be prepended, so syntax is identical whether you are returning a scalar/scalar array or an object.

UseVSE "*ZuluVSE"
Function convertDate(incoming as Variant) as Variant
    Dim dp as New DateTimeParser
    If ("STRING" = TypeName(incoming)) Then
        Return dp.parseISOString(incoming)  'String -> DateTimeObject
    Else
        Return incoming.toISODateTime()     'DateTimeObject -> String
    End If
End Function

Note

The syntax of the Return statement is identical for returning a String and a DateTimeObject.

Return and Try/Catch/Finally

Using Return will still respect a Try/Catch/Finally statement. The Finally block(s) will be processed before exiting the sub or function.