Procedury funkcji (Visual Basic)
Procedura Function
to seria instrukcji Języka Visual Basic ujęta w instrukcje Function
i End Function
. Procedura Function
wykonuje zadanie, a następnie zwraca kontrolę do kodu wywołującego. Gdy zwraca kontrolkę, zwraca również wartość do kodu wywołującego.
Za każdym razem, gdy procedura jest wywoływana, jej instrukcje są uruchamiane, począwszy od pierwszej instrukcji wykonywalnej po Function
instrukcji i kończącej się pierwszą End Function
instrukcją , Exit Function
lub Return
napotkaną.
Procedurę Function
można zdefiniować w module, klasie lub strukturze. Public
Jest to domyślnie możliwe wywołanie z dowolnego miejsca w aplikacji, które ma dostęp do modułu, klasy lub struktury, w której ją zdefiniowano.
Procedura Function
może przyjmować argumenty, takie jak stałe, zmienne lub wyrażenia, które są przekazywane do niego przez kod wywołujący.
Składnia deklaracji
Składnia deklarowania Function
procedury jest następująca:
[Modifiers] Function FunctionName [(ParameterList)] As ReturnType
[Statements]
End Function
Modyfikatory mogą określać poziom dostępu i informacje dotyczące przeciążenia, zastępowania, udostępniania i cieniowania. Aby uzyskać więcej informacji, zobacz Instrukcja funkcji.
Każdy parametr jest deklarowany w taki sam sposób, jak w przypadku procedur podrzędnych.
Typ danych
Każda Function
procedura ma typ danych, podobnie jak każda zmienna. Ten typ danych jest określany przez klauzulę As
w instrukcji Function
i określa typ danych, który funkcja zwraca do kodu wywołującego. Poniższe przykładowe deklaracje ilustrują to.
Function Yesterday() As Date
End Function
Function FindSqrt(radicand As Single) As Single
End Function
Aby uzyskać więcej informacji, zobacz "Części" w instrukcji funkcji.
Zwracanie wartości
Wartość, która Function
procedura wysyła z powrotem do kodu wywołującego, jest nazywana jego wartością zwracaną. Procedura zwraca tę wartość na jeden z dwóch sposobów:
Używa instrukcji
Return
, aby określić wartość zwracaną i zwraca kontrolę natychmiast do programu wywołującego. Ilustruje to poniższy przykład.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
Przypisuje wartość do własnej nazwy funkcji w co najmniej jednej instrukcji procedury. Kontrolka nie powraca do programu wywołującego, dopóki nie
Exit Function
zostanie wykonana instrukcja orEnd Function
. Ilustruje to poniższy przykład.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
Zaletą przypisania wartości zwracanej do nazwy funkcji jest to, że kontrolka nie zwraca się z procedury, dopóki nie napotka instrukcji Exit Function
or End Function
. Dzięki temu można przypisać wstępną wartość i dostosować ją później w razie potrzeby.
Aby uzyskać więcej informacji na temat zwracania wartości, zobacz Instrukcja funkcji. Aby uzyskać informacje na temat zwracania tablic, zobacz Tablice.
Wywoływanie składni
Procedurę Function
należy wywołać, dołączając jej nazwę i argumenty po prawej stronie instrukcji przypisania lub w wyrażeniu. Musisz podać wartości dla wszystkich argumentów, które nie są opcjonalne, i należy ująć listę argumentów w nawiasach. Jeśli nie podano żadnych argumentów, opcjonalnie można pominąć nawiasy.
Składnia wywołania Function
procedury jest następująca.
lvalue =
functionname [(
argumentlist )]
If ((
[(
nazwa funkcji lista argumentów )] / 3) <=
wyrażenie ) Then
Podczas wywoływania Function
procedury nie trzeba używać jej wartości zwracanej. Jeśli nie, wszystkie akcje funkcji są wykonywane, ale zwracana wartość jest ignorowana. MsgBox jest często wywoływana w ten sposób.
Ilustracja deklaracji i wywołania
Poniższa Function
procedura oblicza najdłuższą stronę lub hipotenuse trójkąta prawego, biorąc pod uwagę wartości pozostałych dwóch stron.
Function Hypotenuse(side1 As Double, side2 As Double) As Double
Return Math.Sqrt((side1 ^ 2) + (side2 ^ 2))
End Function
W poniższym przykładzie pokazano typowe wywołanie metody hypotenuse
.
Dim testLength, testHypotenuse As Double
testHypotenuse = Hypotenuse(testLength, 10.7)