Procedimentos Function (Visual Basic)

Um procedimento Function é uma série de instruções do Visual Basic entre instruções Function e End Function. O procedimento Function executa uma tarefa e retorna o controle para o código de chamada. Quando ele retorna o controle, ele também retorna um valor para o código de chamada.

Cada vez que o procedimento é chamado, suas instruções são executadas, começando com a primeira instrução executável após a instrução Function e terminando com a primeira instrução End Function, Exit Function ou Return encontrada.

Você pode definir um procedimento Function em um módulo, classe ou estrutura. É Public por padrão, o que significa que você pode chamá-lo de qualquer lugar em seu aplicativo que tenha acesso ao módulo, classe ou estrutura na qual você o definiu.

Um procedimento Function pode usar argumentos, como constantes, variáveis ou expressões, que são passados para ele pelo código de chamada.

Sintaxe da declaração

A sintaxe para declarar um procedimento Function é a seguinte:

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

Os modificadores podem especificar o nível de acesso e informações sobre sobrecarga, substituição, compartilhamento e sombreamento. Para obter mais informações, consulte Instrução da função.

Você declara cada parâmetro da mesma maneira que faz para Subprocedimentos.

Tipo de dados

Cada procedimento Function tem um tipo de dados, assim como todas as variáveis. Esse tipo de dados é especificado pela cláusula As na instrução Function e determina o tipo de dados do valor que a função retorna ao código de chamada. As declarações de exemplo a seguir ilustram isso.

Function Yesterday() As Date
End Function

Function FindSqrt(radicand As Single) As Single
End Function

Para obter mais informações, consulte "Partes" em Instrução Function.

Retornando valores

O valor que um procedimento Function envia de volta para o código de chamada é chamado de valor retornado. O procedimento retorna esse valor de uma das duas maneiras:

  • Ele usa a instrução Return para especificar o valor retornado e retorna o controle imediatamente para o programa de chamada. O exemplo a seguir ilustra essa situação.

    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
    
  • Ele atribui um valor ao seu próprio nome de função em uma ou mais instruções do procedimento. O controle não retorna ao programa de chamada até que uma instrução Exit Function ou End Function seja executada. O exemplo a seguir ilustra essa situação.

    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
    

A vantagem de atribuir o valor retornado ao nome da função é que o controle não retorna do procedimento até encontrar uma instrução Exit Function ou End Function. Isso permite atribuir um valor preliminar e ajustá-lo posteriormente, se necessário.

Para obter mais informações sobre como retornar valores, consulte a Instrução Function. Para obter informações sobre retorno de matrizes, consulte Matrizes.

Sintaxe de chamada

Você invoca um procedimento Function incluindo seu nome e argumentos no lado direito de uma instrução de atribuição ou em uma expressão. Você deve fornecer valores para todos os argumentos que não são opcionais e deve colocar a lista de argumentos entre parênteses. Se não houver argumentos você pode, opcionalmente, omitir os parênteses.

A sintaxe para declarar um procedimento Function é a seguinte.

lvalue=functionname[(argumentlist)]

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

Quando você chama um procedimento Function, não precisa usar seu valor retornado. Se você não fizer isso, todas as ações da função serão executadas, mas o valor retornado será ignorado. MsgBox geralmente é chamado dessa maneira.

Ilustração de declaração e chamada

O procedimento Function a seguir calcula o lado mais longo, ou hipotenusa, de um triângulo direito, considerando os valores dos outros dois lados.

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

O exemplo a seguir mostra uma chamada típica para hypotenuse.

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

Confira também