Sdílet prostřednictvím


Procedury funkcí (Visual Basic)

Procedura Function je řada příkazů jazyka Visual Basic uzavřených příkazy Function a End Function příkazy. Tento Function postup provede úlohu a pak vrátí řízení volajícímu kódu. Když vrátí ovládací prvek, vrátí také hodnotu volajícího kódu.

Pokaždé, když je volána procedura, její příkazy se spustí, počínaje prvním spustitelným příkazem za Function příkazem a končí na první End Function, Exit Function, nebo Return příkaz, který je zjištěn.

Proceduru Function můžete definovat v modulu, třídě nebo struktuře. Ve výchozím nastavení to Public znamená, že ho můžete volat odkudkoli ve vaší aplikaci, která má přístup k modulu, třídě nebo struktuře, ve které jste ho definovali.

Procedura Function může přijímat argumenty, jako jsou konstanty, proměnné nebo výrazy, které jsou předány volajícím kódem.

Syntaxe deklarace

Syntaxe pro deklarování Function procedury je následující:

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

Modifikátory mohou určit úroveň přístupu a informace týkající se přetížení, překrývání, sdílení a skrývání. Další informace naleznete v části Deklarace funkce.

Každý parametr deklarujete stejným způsobem jako u dílčích procedur.

Datový typ

Každý Function postup má datový typ, stejně jako každá proměnná. Tento datový typ je určen klauzulí As v Function příkazu a určuje datový typ hodnoty, kterou funkce vrátí do volajícího kódu. Toto je znázorněno v následujících ukázkových deklaracích.

Function Yesterday() As Date
End Function

Function FindSqrt(radicand As Single) As Single
End Function

Další informace naleznete v části Oddíly v Prohlášení o funkci.

Vrácení hodnot

Hodnota, kterou procedura Function odešle zpět volajícímu kódu, se nazývá její návratová hodnota. Procedura vrátí tuto hodnotu jedním ze dvou způsobů:

  • Pomocí Return příkazu určí návratové hodnoty a vrátí ovládací prvek okamžitě volajícímu programu. Toto dokládá následující příklad.

    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
    
  • Přiřadí hodnotu vlastnímu názvu funkce v jednom nebo více příkazech procedury. Řízení se nevrátí do volajícího programu, dokud není vykonán příkaz Exit Function nebo End Function. Toto dokládá následující příklad.

    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
    

Výhodou přiřazení návratové hodnoty k názvu funkce je, že ovládací prvek se nevrátí z procedury, dokud nenarazí na příkaz Exit Function nebo příkaz End Function . To vám umožní přiřadit předběžnou hodnotu a v případě potřeby ji upravit později.

Další informace o vracení hodnot naleznete v Function Statement. Informace o vrácení polí najdete v části Pole.

Syntaxe volání

Proceduru Function vyvoláte tak, že zahrnete její název a argumenty buď na pravé straně příkazu přiřazení, nebo ve výrazu. Je nutné zadat hodnoty pro všechny argumenty, které nejsou volitelné, a je nutné uzavřít seznam argumentů do závorek. Pokud nejsou zadány žádné argumenty, můžete volitelně vynechat závorky.

Syntaxe volání Function procedury je následující.

lvalue=functionname[(Argumentlist)]

If (( functionname[(argumentlist)] / 3) <=výraz) Then

Při volání Function procedury nemusíte používat jeho návratovou hodnotu. Pokud tak neučiníte, všechny akce funkce se provádějí, ale návratová hodnota se ignoruje. MsgBox je často volána tímto způsobem.

Obrázek deklarace a volání

Následující Function postup vypočítá nejdelší stranu nebo hypotenuse pravého trojúhelníku vzhledem k hodnotám pro ostatní dvě strany.

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

Následující příklad ukazuje typické volání hypotenuse.

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

Viz také