Procedimientos Function (Visual Basic)

Un procedimiento Function es una serie de instrucciones de Visual Basic incluidas entre las instrucciones Function y End Function. El procedimiento Function realiza una tarea y luego devuelve el control al código de llamada. Cuando devuelve el control, también devuelve un valor al código de llamada.

Cada vez que se llama al procedimiento, se ejecutan sus instrucciones desde la primera instrucción ejecutable tras la instrucción Function hasta la primera instrucción End Function, Exit Function o Return encontrada.

Puede definir un procedimiento Function en un módulo, una clase o una estructura. Es Public de manera predeterminada, lo que significa que es posible llamarlo desde cualquier lugar de la aplicación que tenga acceso al módulo, la clase o la estructura en que se ha definido.

Un procedimiento Function puede tomar argumentos, como constantes, variables o expresiones, que el código de llamada le pasa.

Sintaxis de declaración

La sintaxis para declarar un procedimiento Function es la siguiente:

[Modifiers] Function FunctionName [(ParameterList)] As ReturnType
    [Statements]
End Function

Los modificadores pueden especificar el nivel de acceso e información sobre la sobrecarga, la invalidación, el uso compartido y el sombreado. Para obtener más información, vea Function (Instrucción).

Declare cada parámetro de la misma manera en que declararía Subprocedimientos.

Tipo de datos

Cada procedimiento Function tiene un tipo de datos, igual que cada variable. La cláusula As especifica este tipo de datos en la instrucción Function y determina el tipo de datos del valor que la función devuelve al código de llamada. Las siguientes declaraciones de ejemplo ilustran esto.

Function Yesterday() As Date
End Function

Function FindSqrt(radicand As Single) As Single
End Function

Para obtener más información, vea "Partes" en Function (Instrucción).

Valores devueltos

El valor que un procedimiento Function devuelve al código de llamada se conoce como valor devuelto. El procedimiento devuelve este valor de una de estas dos maneras:

  • Usa la instrucción Return para especificar el valor devuelto y devuelve el control inmediatamente al programa que realiza la llamada. Esto se ilustra en el siguiente ejemplo:

    Function FunctionName [(ParameterList)] As ReturnType
        ' The following statement immediately transfers control back
        ' to the calling code and returns the value of Expression.
        Return Expression
    End Function
    
  • Asigna un valor a su propio nombre de función en una o varias instrucciones del procedimiento. El control no se devuelve al programa que realiza la llamada hasta que se ejecuta una instrucción Exit Function o End Function. Esto se ilustra en el siguiente ejemplo:

    Function FunctionName [(ParameterList)] As ReturnType
        ' The following statement does not transfer control back to the calling code.
        FunctionName = Expression
        ' When control returns to the calling code, Expression is the return value.
    End Function
    

La ventaja de asignar el valor devuelto al nombre de la función es que el control no se devuelve del procedimiento hasta que encuentra una instrucción Exit Function o End Function. Esto permite asignar un valor preliminar y ajustarlo más adelante si fuera necesario.

Para obtener más información sobre la devolución de valores, vea Function (Instrucción). Para obtener información sobre la devolución de matrices, vea Matrices.

Sintaxis de llamada

Para invocar a un procedimiento Function, incluya su nombre y argumentos en el lado derecho de una instrucción de asignación o en una expresión. Debe proporcionar valores para todos los argumentos que no son opcionales, y hay que incluir la lista de argumentos entre paréntesis. Si no se proporciona ningún argumento, opcionalmente se pueden omitir los paréntesis.

La sintaxis de una llamada a un procedimiento Function es la siguiente.

lvalue=functionname[(argumentlist)]

If ((functionname[(argumentlist)] / 3) <=expression) Then

Cuando se llama a un procedimiento Function, no es necesario usar su valor devuelto. Si no se hace, se realizan todas las acciones de la función, pero se omite el valor devuelto. MsgBox a menudo se llama de esta manera.

Ilustración de declaración y llamada

El procedimiento Function siguiente calcula el lado más largo, o hipotenusa, de un triángulo rectángulo, dados los valores de los otros dos lados.

Function Hypotenuse(side1 As Double, side2 As Double) As Double
    Return Math.Sqrt((side1 ^ 2) + (side2 ^ 2))
End Function

En el ejemplo siguiente se muestra una llamada típica a hypotenuse.

Dim testLength, testHypotenuse As Double
testHypotenuse = Hypotenuse(testLength, 10.7)

Consulte también