identifier: имя функции
external_identifier: видимое извне (компоновщику) имя,
заключенное в кавычки
parameter_list:
parameter[, parameter[, ...]]
parameter:
[ByRef|ByVal] identifier [As type] [= default_value]
identifier: имя переменной, на которое
ссылается функция. Если аргумент является массивом , тогда
идентификатор должен сопровождаться пустыми скобками.
type: тип переменной
default_value: значение аргумента, если не задан в вызове
return_type: тип переменной, возвращаемый функцией
statements: один или несколько операторов, составляющих тело
функции
return_value: значение, возвращаемое из функции
Функция определяет блок кода, который может быть выполнен одной инструкцией
(вызов функции) и предоставить значение обратно вызывающему объекту по
окончании (возвращаемое значение). Существует несколько причин для
использования функции:
- Снижает размер кода в вашей программе
- Позволяет повторно использовать код во многих программах
- Улучшает читаемость программы
- Улучшает отладку программы
- Позволяет легко расширить программу
Права доступа : Ключевые слова
Public
и
Private указывают глобальный или
приватный доступ на уровня модуля, соответственно. Если ни дается, функция
по умолчанию имеет доступ (
Public).
Конвенция вызова : Конвенция вызова или порядок, в котором аргументы
заталкиваются и извлекаются из стека во время вызовов функций, задаются
ключевыми словами
cdecl,
pascal
и
stdcall. Если иное не указано,
функция использует стандартное соглашение по умолчанию (
stdcall).
Передача аргументов : Функции могут получать один или несколько
переменных или аргументов, при вызове. Эти параметры перечислены как
parameters
в
parameter_list. Ключевые слова
ByRef
и
ByVal указывают, что аргумент будет
передаваться по ссылке или по значению, соответственно. Задается тип
аргумента "
As type" после
parameter.
Если в параметре в объявлении указывается значение по умолчанию, параметр
является необязательным. Параметры массива задаются идентификатором с
пустыми скобками. Обратите внимание, что параметры массива всегда
ByRef
и
ByRef ключевое слово не требуется и
даже не разрешается для параметров с массивом. При вызове функции с
аргументом массива скобки должны быть поставлены; см. примеры.
Перегрузка функций : Перегруженная функция может иметь одно и то же
имя (
identifier) с другой сигнатурой. Ключевое слово
Overload
указывает, что функция может быть перегружена. Функция должна быть
определена или объявлена , используя ключевое слово
Overload
до любых функций, которые перегружают их.
Возвращение значений :
return_type определяет
тип данных , возвращаемый функцией при
выходе. Если тип данных не указан, то функция вернет тип данных по
умолчанию, который будет Integer если только не установлен другой тип данных
с помощью
DefSng,
DefDbl,
DefStr,
и др. Функции могут возвращать значения с использованием трех методов:
ключевое слово
Return после
него сразу же значение. Данная команда заставляет выходить из функции, и
возвращать это значение в вызывающую программу. Функции также могут
возвращать значения, назначив после ключевого слова Function или после
identifier
желаемое возвращаемое значение. Последние два метода не заставляют
завершаться функцию. Поскольку функции возвращают значения, вызовы функций
оцениваются в выражениях. Таким образом, вызовы функций могут быть сделаны в
выражениях
Присваивания или в
заявлениях
If. Скобки, окружающие
список аргументов требуются при вызовах функций в выражениях и даже
настоятельно рекомендуется, если нет аргументов. Функции также могут
возвращать ссылки, указав
Byref As return_type.
Сохранение локальных переменных : Ключевое слово
Static
определяет, что переменные в функции являются локальными и сохраняются между
вызовами функций. При входе в функцию, определенную с
Static,
локальные переменные имеют то же значение, которое было , перед завершением
функции в последний вызов.
См. также