КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Создание пользовательских функций. Вы уже научились создавать собственные процедуры, но еще не знаете о том, как создать их старшую сеструВы уже научились создавать собственные процедуры, но еще не знаете о том, как создать их старшую сестру, функцию. Функция, как и процедура, — изолированный фрагмент кода, способный включать в себя произвольное число операторов. И, так же как и процедуры, функции можно добавлять в модули. В модуле может сосуществовать рядом любое количество процедур и функций. Function DoSomething() 'Здесь код функции End Function Главное отличие функции от процедуры заключается в том, что функция формирует конечный результат. Другими словами, функции предоставляют порцию нужных вам данных. Вы задаете результат, написав строку кода, которая присваивает окончательное значение имени функции. (По существу, вы считаете, что имя функции — это переменная, в которой можно хранить некоторые данные.) Далее приведен пример: Function GetMyFavoriteColor() GetMyFavoriteColor = "Magenta" End Function Эта функция названа GetMyFavoriteColor (получение моего любимого цвета). Ее результат — текстовая строка "Magenta" (пурпурный). Вызов функции несколько отличается от вызова процедуры. Для вызова процедуры вы используете имя модуля, за которым следует точка, а затем имя процедуры. Этот же способ можно применить и для вызова функции: MyModule.GetMyFavoriteColor Но возникает проблема. Этот шаг запускает функцию GetMyFavoriteColor, но отбрасывает результат (строку с текстом Magenta). Если вас интересует результат, можно вызвать функцию в операторе присваивания. В приведенном далее коде создана переменная для хранения результата и последующего отображения его в окне сообщения: ' Создается переменная для хранения результата Dim Color
' Вызывается функция и результат сохраняется в переменной Color = MyModule.GetMyFavoriteColor
' Результат отображается в окне сообщения MsgBox "Your favorite color is " & Color Если вы по-настоящему сообразительны, то можете сократить этот код до одной строки и вообще избежать использования переменной Color: MsgBox "Your favorite color is " & MyModule.GetMyFavoriteColor Функция GetMyFavoriteColor предельно проста, т. к. не использует аргументы. Но ничто не мешает вам проявить большую изобретательность. Рассмотрите следующую пользовательскую функцию, которая принимает два аргумента — длину и ширину — и вычисляет площадь, перемножая их: Function Area(Length, Width) Area = Length * Width End Function Эти два параметра определяются в скобках после имени функции. Количество параметров может быть любым при условии, что вы отделяете один от другого запятой. Далее приведен пример вызова данной функции и отображения результата. В нем для определения параметров Length (длина) и Width (ширина) применяются числовые константы. Но их вполне можно заменить именем поля, переменной или свойством, которые вы хотите использовать в функции Area. MsgBox "The area of a 4x4 rectangle is " & Area(4, 4) На экране появится: The area of a 4x4 rectangle is 16 Ни функция GetMyFavoriteColor (), ни функция Area () не продемонстрировали ничего впечатляющего, но в следующем разделе этой главы вы создадите гораздо более мощную функцию для проверки номеров кредитных карт.
|