Ключевое слово Optional

При определении функции можно указать, что некоторые из передаваемых параметров являются необязательными. Для этого перед определением параметра ставится ключевое слово Optional:

 

Public Function CreateUser (UserlD As String, Password As String, _

Optional Description As String) As Boolean

 

Третий параметр, Description, необязателен. При желании функции CreateUser можно передать описание пользователя, но функция будет работать и без него. Единственное, о чем следует помнить при объявлении необязательных параметров, -все последующие аргументы тоже должны быть необязательными и объявляться с ключевым словом Optional.

Перед именем объявляемого параметра могут указываться еще три префикса —

ByRef, ByVal и ParamArray.

 

Ключевое слово ByRef

Префикс ByRef означает, что параметр передается по ссылке (по умолчанию в Visual Basic используется именно такой способ передачи). Когда переменная передается по ссылке, функция или процедура получает ее адрес в памяти и может изменить фактическое значение переменной. Передача по ссылке позволяет передать или получить несколько результатов при одном вызове функции. Синтаксис выглядит следующим образом:

 

Function FunctionName(ByRef AVariable As String) As Boolean

 

или

 

Function FunctionName(AVariable As String) As Boolean

 

 

ПОДСКАЗКА Поскольку передача по ссылке используется по умолчанию, указывать ключевое слово ByRef в объявлении ваших собственных функций необязательно. Тем не менее это ключевое слово довольно часто используется при работе с DLL

 

Ключевое слово ByVal

Префикс ByVal говорит о том, что параметр передается по значению. В этом случае Visual Basic передает копию текущего содержимого переменной вместо ее адреса в памяти, и функция или процедура не сможет напрямую модифицировать исходное значение. Синтаксис выглядит следующим образом:

Function FunctionName(ByVal AVariable As String) As Boolean

 

Ключевое слово ParamArray

Ключевое слово ParamArray позволяет передать функции неопределенное количество параметров. Например, с его помощью можно передать функции CreateUser сведения о произвольном количестве пользователей. Одно из требований, связанных с ключевым словом ParamArray, состоит в том, что передаваемый массив данных должен иметь тип Variant. Объявление функции должно иметь следующий синтаксис:

 

Function FunctionName(ParamArray AnArray() As Variant) As Boolean

 

В этом случае функция может вызываться так:

 

Dim rc As Boolean

rс = FunctionName("Джон", "Джейн", "Джим", "Дженни")

rс = FunctionName("Джеймс")

rс = FunctionName("Джерри", "Джеки")

 

Обратите внимание: такую функцию можно вызывать с любым количеством параметров, вам не придется включать в программу несколько отдельных вызовов. Ключевое слово ParamArray делает функции более универсальными, но за это приходится расплачиваться скоростью выполнения программы: данные типа Variant обрабатываются медленнее, чем другие типы Visual Basic.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: