Подпрограммы VBScript
Виды подпрограмм
В VBScript есть два вида подпрограмм: процедуры (Sub) и функции
(Function).
Процедуры
Процедура в VBScript — это последовательность операторов,
заключённых между ключевыми словами Sub и End Sub.
Процедура выполняет некоторые действия, но не возвращает значение (результат выполнения этих действий).
Процедура может принимать аргументы (параметры), в качестве которых могут быть
константы, переменные или выражения. Если процедура не имеет входных параметров,
то после имени процедуры должны стоять пустые круглые скобки.
Процедура, приведённая в следующем примере, использует две распространённых
стандартных функции VBScript: MsgBox и InputBox,
которые используются для ввода пользователем некоторой информации.
Затем отображается результат вычислений, выполненных на основе этой информации.
Вычисления выполняются с помощью функции Celsius, созданной в VBScript и рассмотренной далее.
Sub ConvertTemp()
temp = InputBox("Введите температуру по Фаренгейту, F", 1)
MsgBox "Температура по Цельсию, С = " & Celsius(temp)
End Sub
Функции
Функция в VBScript — это последовательность операторов, заключённых
между ключевыми словами Function и End Function.
Функция подобна процедуре, но в отличие от процедуры она может возвращать
значение (результат выполнения функции). Функция может принимать аргументы (параметры),
в качестве которых могут быть константы, переменные или выражения.
Если функция не имеет входных параметров, то после имени функции должны стоять
пустые круглые скобки. Если требуется, чтобы функция возвращала значение,
то это значение должно присваиваться имени функции в одном или нескольких
операторах в теле функции. Функция всегда возвращает данные типа
Variant.
Функция, приведённая в следующем примере, используется в примере применения
процедур (см. выше). Эта функция преобразует температуру
по Фаренгейту в температуру по Цельсию. Функция вызывается в теле процедуры
ConvertTemp. Результат вычислений возвращается функцией в вызывающую процедуру.
Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function
Получение данных в процедуру и из процедуры
Каждый элемент данных помещается в вашу процедуру путём передачи параметров (аргументов).
Параметры служат как контейнер для данных, которые вы хотите передать в процедуру.
Вы можете присваивать параметрам любые имена, отвечающие правилам именования переменных.
Когда вы создаёте процедуру или функцию, то после имени подпрограммы должны быть
круглые скобки. Все параметры помещаются в круглых скобках после имени подпрограммы.
Если параметров несколько, то они разделяются запятой.
Если подпрограмма должна возвращать значение (то есть если вы хотите получить
данные из подпрограммы), то вы должны использовать функцию. Помните, что
функция может возвращать значение, а процедура — не может. Впрочем, если вы
хотите получить какие-либо данные из процедуры, то вы можете использовать для
этих целей глобальные переменные. Хотя такой подход не рекомендуется, так как
он делает код плохо читаемым и увеличивает вероятность ошибок.
Использование подпрограмм в коде
Функция в вашем коде должна всегда находиться в правой части выражения,
то есть результат функции всегда присваивается какой-либо переменной. Например:
temp = Celsius(100)
или
MsgBox "Температура по Цельсию, С = " & Celsius(temp)
Для вызова процедуры из другой подпрограммы вам нужно только напечатать имя
процедуры в одной строке с параметрами, передаваемыми в процедуру. Параметры должны
разделяться запятой. При вызове процедуры оператор
Call использовать
не обязательно, но если вы его применяете, то вы должны помещать параметры в круглые скобки.
В следующем примере показан вызов процедуры MyProc двумя способами: с использованием
и без использования оператора Call. Оба варианта по сути одинаковы.
Call MyProc(firstarg, secondarg)
MyProc firstarg, secondarg
Учтите, что при вызове процедуры круглые скобки не применяются, если не используется
оператор
Call.
Резюме
Функция — это процедура, которая возвращает значение при завершении.
Процедура не возвращает значений. В VBScript есть отличия между вызовом процедур и функций.
Если вызывается процедура с параметрами, то параметры не должны заключаться в скобки.
Когда вызывается функция с параметрами, то параметры не должны заключаться в скобки,
если возвращаемое значение не используется. Иначе параметры должны заключаться в скобки.
Пример
'Это процедура, скобки не используются
Erase ArrayOfNumbers
'Возвращаемое значение используется,
'поэтому параметры заключены в скобки.
Response = MsgBox("Continue?", vbYesNo, "Confirm")
'Возвращаемое значение не используется,
'поэтому параметры не заключены в скобки.
MsgBox "Finished.", vbOKOnly, "Information"