Поделиться через


Процедуры Function (Visual Basic)

Процедура Function — это последовательность операторов Visual Basic, заключенных между операторами Function и End Function. Процедура Function выполняет задачу и возвращает управление вызвавшему ее коду. Вместе с управлением вызвавшему коду возвращается значение.

При каждом вызове процедуры ее инструкции выполняются, начиная с первого исполняемого оператора после оператора Function и заканчивая первым из операторов End Function, Exit Function или Return.

Можно определить процедуру Function в модуле, классе или структуре. По умолчанию эта процедура является глобальной (Public), что позволяет вызывать ее из любого места в приложении, из которого доступны модуль, класс или структура, в которых она определена.

Процедура Function может принимать аргументы, например константы, переменные или выражения, которые передаются ей вызывающим кодом.

Синтаксис объявления

Для объявления процедуры Function используется следующий синтаксис:

[модификаторы] Function имя_функции[(список_параметров)] As тип_возвращаемого_значения

' Statements of the Function procedure.

End Function

В разделе модификаторы можно указать уровень доступа и сведения о перегрузке, переопределении, общем доступе и переобъявлении. Дополнительные сведения см. в разделе Оператор Function (Visual Basic).

Параметры объявляются так же, как для Подпрограммы (Visual Basic).

Тип данных

Каждой процедуре Function, как и любой переменной, назначается тип данных. Этот тип данных указывается предложением As оператора Function и определяет тип значения, которое функция будет возвращать вызывающему коду. Например:

Function yesterday() As Date
End Function
Function findSqrt(ByVal radicand As Single) As Single
End Function

Дополнительные сведения об ограничениях содержатся в подразделе "Компоненты" раздела Оператор Function (Visual Basic).

Возвращаемые значения

Значение, которое процедура Function отправляет вызывающему коду, называется возвращаемым значением. Процедура возвращает значение одним из двух способов:

  • Значение присваивается собственному имени функции в одном или нескольких операторах процедуры. Управление не возвращается вызывающей программе до тех пор, пока не будет выполнен оператор Exit Function или End Function. Это показано в приведенном ниже примере.

    Function имя_функции[(список_параметров)] As тип_возвращаемого_значения

    ' The following statement does not transfer control back to the calling code.

    имя_функции = выражение

    ' When control returns to the calling code, выражение is the return value.

    End Function

  • Для определения возвращаемого значения используется оператор Return, после которого управление немедленно возвращается вызывающей программе. Это показано в приведенном ниже примере.

    Function имя_функции[(список_параметров)] As тип_возвращаемого_значения

    ' The following statement immediately transfers control back to the calling code and returns the value of выражение.

    Return выражение

    End Function

Преимущество первого способа (с присвоением имени функции возвращаемого значения) заключается в том, что управление возвращается в вызывающую программу только после того, как будет выполнен оператор Exit Function или End Function. Это позволяет разработчику определить предварительное значение и изменять его впоследствии при необходимости.

Дополнительные сведения см. в разделе "Возвращаемое значение" Оператор Function (Visual Basic).

Возврат массивов

Если процедура Function возвращает массив, отдельные элементы массива внутри функции будут недоступны. Попытку выполнить такой доступ компилятор интерпретирует как рекурсивный вызов функции. Это показано в приведенном ниже примере.

Function allOnes(ByVal n As Integer) As Integer()

For i As Integer = 1 To n - 1

' The following statement generates a COMPILER ERROR.

allOnes(i) = 1

Next i

' The following statement generates a COMPILER ERROR.

Return allOnes()

End Function

В предыдущем примере компилятор интерпретирует попытку присвоения allOnes(i) = 1 как вызов функции allOnes, стоящей слева от оператора присваивания. Он интерпретирует Return allOnes() как вызов без аргументов. Оба оператора порождают ошибку компилятора.

Синтаксис вызова

Для вызова процедуры Function следует указать ее имя и аргументы справа от оператора присваивания или в составе выражения. Необходимо задать значения всех аргументов, которые являются обязательными, причем список аргументов должен быть заключен в скобки. Если не указано никаких аргументов, скобки можно опустить.

Для вызова процедуры Function используется следующий синтаксис:

Значение = имя_функции[(список_аргументов)]

If ((имя_функции[(список_аргументов)] / 3) <= выражение) Then

При вызове процедуры Function не обязательно использовать возвращаемое ею значение. Если значение не используется, выполняются все действия функции, но возвращаемое значение игнорируется. Часто таким образом вызывается функция MsgBox.

Пример объявления и вызова

Приведенная ниже процедура Function вычисляет длину самой длинной стороны прямоугольного треугольника (гипотенузы) по значениям двух других сторон.

Function hypotenuse(ByVal side1 As Single, ByVal side2 As Single) As Single
    Return Math.Sqrt((side1 ^ 2) + (side2 ^ 2))
End Function

В следующем примере показан типичный вызов hypotenuse.

Dim testLength, testHypotenuse As Single
testHypotenuse = hypotenuse(testLength, 10.7)

Функции среды выполнения Visual Basic

В среде выполнения Visual Basic представлено множество функций, расположенных в пространстве имен Microsoft.VisualBasic. В него входят такие наиболее используемые функции, как Beep, MsgBox и StrComp. Эти функции можно вызывать точно так же, как и свои собственные процедуры Function.

См. также

Задачи

Практическое руководство. Создание процедуры, возвращающей значение (Visual Basic)

Практическое руководство. Возврат значения из процедуры (Visual Basic)

Практическое руководство. Вызов процедуры, возвращающей значение (Visual Basic)

Ссылки

Оператор Function (Visual Basic)

Основные понятия

Процедуры в Visual Basic

Подпрограммы (Visual Basic)

Процедуры свойств (Visual Basic)

Процедуры операторов (Visual Basic)

Параметры и аргументы процедуры (Visual Basic)