Evaluar y enviar comentarios

  Encender vista de ancho de banda bajo
Esta página es específica de
Microsoft Visual Studio 2005/.NET Framework 2.0

Hay además otras versiones disponibles para:
Referencia del lenguaje Visual Basic
Instrucción Function (Visual Basic)

Declara el nombre, los parámetros y el código que definen un procedimiento Function.

[ <attributelist> ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] 
Function name [ (Of typeparamlist) ] [ (parameterlist) ] [ As returntype ] [ Implements implementslist | Handles eventlist ]
    [ statements ]
    [ Exit Function ]
    [ statements ]
End Function
attributelist

Opcional. Vea la Lista de atributos.

accessmodifier

Opcional. Puede ser una de las siguientes:

Vea Niveles de acceso en Visual Basic.

proceduremodifiers

Opcional. Puede ser una de las siguientes:

Shared

Opcional. Vea Shared.

Shadows

Opcional. Vea Shadows.

name

Obligatorio. Nombre del procedimiento. Vea Nombres de elementos declarados.

typeparamlist

Opcional. Lista de parámetros de tipo para un procedimiento genérico. Vea la Lista de tipos.

parameterlist

Opcional. Lista de nombres de variables locales que representan los parámetros de este procedimiento. Vea la Lista de argumentos.

returntype

Obligatorio si Option Strict es On. Tipo de datos del valor devuelto por este procedimiento.

Implements

Opcional. Indica que este procedimiento implementa uno o más procedimientos Function, cada uno de los cuales se define en una interfaz implementada por la clase contenedora o la estructura de este procedimiento. Vea Implements (Instrucción).

implementslist

Requerido si se suministra Implements. Lista de procedimientos Function que se implementan.

implementedprocedure [ , implementedprocedure ... ]

Cada implementedprocedure tiene la sintaxis y las partes siguientes:

interface.definedname

Parte Descripción

interface

Obligatorio. Nombre de una interfaz implementada por la clase contenedora o la estructura de este procedimiento.

definedname

Obligatorio. Nombre por el que se define el procedimiento en interface.

Handles

Opcional. Indica que este procedimiento puede controlar uno o más eventos específicos. Vea Handles.

eventlist

Requerido si se suministra Handles. Lista de eventos que controla este procedimiento.

eventspecifier [ , eventspecifier ... ]

Cada eventspecifier tiene la sintaxis y las partes siguientes:

eventvariable.event

Parte Descripción

eventvariable

Obligatorio. Variable de objeto declarada con el tipo de datos de la clase o estructura que provoca el evento.

event

Obligatorio. Nombre del evento que controla este procedimiento.

statements

Opcional. Bloque de instrucciones que se ejecutan dentro de este procedimiento.

End Function

Termina la definición de este procedimiento.

El código ejecutable debe estar en un procedimiento. Cada procedimiento se declara a su vez dentro de una clase, estructura o módulo, que se denominan clase contenedora, estructura o módulo.

Utilice un procedimiento Function cuando necesita devolver un valor al código de llamada. Utilice un procedimiento Sub cuando no necesita devolver un valor.

Sólo puede utilizar Function en el nivel de módulo. Esto significa que el contexto de la declaración para una función debe ser una clase, estructura, módulo o interfaz y no puede ser un archivo de código fuente, espacio de nombres, procedimiento o bloque. Para obtener más información, vea Contextos de declaración y niveles de acceso predeterminados.

Los procedimientos Function tienen como valor predeterminado el acceso público. Puede ajustar sus niveles de acceso con los modificadores de acceso.

Se puede utilizar un procedimiento Function en el lado derecho de una expresión cuando desee utilizar el valor devuelto por la función. El procedimiento Function se utiliza de la misma manera que utiliza cualquier función de la biblioteca como por ejemplo Sqrt, Cos o ChrW.

Puede llamar a un procedimiento Function con el nombre del procedimiento, seguido por la lista de argumentos entre paréntesis, en una expresión. Si no se proporcionan argumentos, se pueden omitir los paréntesis. Sin embargo, el código es más legible si se incluyen siempre los paréntesis.

Se puede llamar una función también mediante la instrucción Call. En cualquier caso, el valor devuelto se pasará por alto.

Reglas

  • Tipo de valor devuelto. La instrucción Function puede declarar el tipo de datos del valor que devuelve. Puede especificar cualquier tipo de datos o el nombre de una enumeración, estructura, clase o interfaz.

    Si no especifica returntype, el procedimiento devuelve un tipo Object.

  • Implementación. Si este procedimiento utiliza la palabra clave Implements, la clase contenedora o la estructura también deben incluir una instrucción Implements inmediatamente después de la instrucción Class o Structure. La instrucción Implements debe incluir cada interfaz especificada en implementslist. Sin embargo, el nombre con el que una interfaz define Function (en definedname) no tiene que ser el mismo que el nombre de este procedimiento (en name).

Comportamiento

  • Volver de un procedimiento. Cuando el procedimiento Function vuelva al código de llamada, la ejecución continúa con la instrucción que sigue a la instrucción que lo llamó.

    Las instrucciones Exit Function y Return provocan una salida inmediata de un procedimiento Function. Puede aparecer cualquier número de instrucciones Exit Function y Return en cualquier parte del procedimiento y puede combinar instrucciones Exit Function y Return.

  • Valor devuelto. Para devolver un valor de una función, se puede asignar el valor al nombre de función o incluirlo en una instrucción Return. El ejemplo siguiente asigna el valor devuelto al nombre de función myFunction y, a continuación, utiliza la instrucción Exit Function para volver:

    Visual Basic
    Function myFunction(ByVal j As Integer) As Double
        myFunction = 3.87 * j
        Exit Function
    End Function
    

    Si utiliza Exit Function sin asignar un valor a name, el procedimiento devuelve el valor predeterminado del tipo de datos especificado en returntype. Si no se especifica returntype, el procedimiento devuelve Nothing, el valor predeterminado de Object.

    La instrucción Return asigna el valor devuelto y sale de la función. Esto se muestra en el siguiente ejemplo.

    Visual Basic
    Function myFunction(ByVal j As Integer) As Double
        Return 3.87 * j
    End Function
    

Solución de problemas

  • Orden de ejecución. Visual Basic reorganiza a veces las expresiones aritméticas para aumentar la eficacia interna. Por esta razón, evite utilizar un procedimiento Function en una expresión aritmética cuando la función cambie el valor de las variables en la misma expresión.

En el siguiente ejemplo se utiliza la instrucción Function para declarar el nombre, parámetros y código que forman el cuerpo de un procedimiento Function. El modificador ParamArray permite a la función aceptar un número variable de argumentos.

Visual Basic
Public Function calcSum(ByVal ParamArray args() As Double) As Double
    calcSum = 0
    If args.Length <= 0 Then Exit Function
    For i As Integer = 0 To UBound(args, 1)
        calcSum += args(i)
    Next i
End Function

En el ejemplo siguiente se invoca a la función declarada en el ejemplo anterior.

Visual Basic
Dim returnedValue As Double = calcSum(4, 3, 2, 1)
' The function's local variables are assigned the following values:
' args(0) = 4, args(1) = 3, and so on.
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Función Return      tomasloon   |   Editar   |   Mostrar historial
Programando una vez más, me encontré con un problema:
Dentro de un módulo general, en Visual Basic 6.0 con Service Pack 6 y MSDN Libraries...
Para un sistema de administración con conexión a base de datos

Necesitaba obtener la cantidad de valores de un campo en varios registros y sumarlos. En mi caso eran: Distintos zapatos de distinto color pero mismo artículo y mismo código, obtener todos los talles correspondientes.
En el listView, se carga por renglón: Código, Artículo, Color y Cantidad de talles que tiene.
En el módulo general, se carga la info del ListView, exceptuando CANTIDAD.
...
Public Function Carga_lstvCant_mod_stock()
'Muestra los datos de la base en el listview del FORM Modificacion Stock
    With rsTabla
        If .RecordCount <> 0 Then
            frm_modstock_cant.lstvDatos.ListItems.Clear
            Do While Not .EOF
                Set Items = frm_modstock_cant.lstvDatos.ListItems.Add(, , .Fields(0) & "")
                Items.SubItems(1) = .Fields(1) & ""
                Items.SubItems(2) = .Fields(2) & ""
                Items.SubItems(3) = obtieneCantalles
                .MoveNext
            Loop
        End If
    End With
End Function
...

Eso es pedazo de código, por favor no robar, sino tomar como base para trabajar.

Bien ahora viene la parte de obtieneCantalles() (también está en el mismo módulo, un poco antes)

Public Function obtieneCantalles() As Integer
Dim i As Integer
Dim CONSQL As String
obtieneCantalles = 0
With rsTabla

CONSQL = "select count(Talle) from articulos_stock where Codigo='" & .Fields(0) & "' AND Articulo='" & .Fields(1) & "' AND Color='" & .Fields(2) & "'"
Set rsCantalles = Base.OpenRecordset(CONSQL)
obtieneCantalles = rsCantalles.Fields(0)

End With
End Function


Utilicé el 2do método que brinda este sitio (asignar variables con el nombre de la función)

En fin todo este artículo lo puse para explicar que en VB 6.0 la función RETURN dentro de un módulo no sirve, devuelve un error y no permite ningún contenido luego de ejecutarla (RETURN y ahí si escribes algo pide fin de la instrucción, o sea, [INTRO])... Es decir no sirve Return nombre_de_la_variable_que_quisiera_devolver...


Sólo eso, un asterisco a todo esto del msdn... Muchas gracias.
Marcar como ContentBug
Processing
© 2009 Microsoft Corporation. Reservados todos los derechos. Términos de uso  |  Marcas Registradas  |  Privacidad
Page view tracker