Создает определяемую пользователем функцию в программном файле. Есть две версии синтаксиса.

FUNCTION FunctionName
   [ LPARAMETERS parameter1 [ ,parameter2 ] , ... ]
Commands [ RETURN [ eExpression ] ]
[ENDFUNC]
FUNCTION FunctionName( [ parameter1 [ AS para1type ][ ,parameter2 [ AS para2type ] ],...] ) [ AS returntype ]
Commands [ RETURN [ eExpression ] ]
[ENDFUNC]

Параметры

FUNCTION FunctionName

Определяет начало определяемой пользователем функции и определяет имя функции. FunctionName может содержать до 254 символов.
[LPARAMETERS parameter1 [, parameter2 ]...]

Присваивает данные из вызывающей программы локальным переменным или массивам. Вы можете также использовать ключевое слово PARAMETERS вместо LPARAMETERS, чтобы принять Private параметры. Вы можете передать максимум 26 параметров для функции. Для подробной информации, см. LPARAMETERS Команда и PARAMETERS Команда .
([ parameter1 [AS para1type ] [, parameter2 [AS para2type ]]...])

Присваивает данные из вызывающей программы локальным переменным или массивам. Вы можете использовать предложение AS para1type , чтобы задать тип данных переменной.
Обратите внимание:
Включение параметров в круглых скобках (()) немедленно после имени функции указывает, что параметры имеют локальную видимость по отношению к функции.

[AS return type ]

Определяет тип данных возвращаемого значения. Вы можете использовать предложение AS, чтобы осуществить строгий контроль типов. Для подробной информации, см. Как: Осуществлять Строгий контроль типов для Класса, Объекта, и Переменной Кода .
Commands

Определяет команды Visual FoxPro для выполнения при выполнении функции.
[RETURN [ eExpression ]]

Возвращает управление к вызывающей программе или к другой программе. eExpression может определить возвращаемое значение.
Обратите внимание:
Вы можете включить команду RETURN в любом месте функции, чтобы возвратить управление к вызывающей программе или к другой программе и определить значение, возвращенное функцией. Если Вы не включаете команду RETURN, Visual FoxPro автоматически выполняет RETURN неявно, когда функция завершается. Если команда RETURN не включает возвращаемое значение или если выполняется неявный RETURN, Visual FoxPro присваивает Истину (.T). возвращаемому значению. Для подробной информации, см. RETURN Команда .

[ENDFUNC]

Указывает конец структуры FUNCTION.
Обратите внимание:
Ключевое слово ENDFUNC является дополнительным, потому что функция завершается, когда она достигает другой команды FUNCTION, команды PROCEDURE, или конца программного файла. Вы не можете включить нормальный выполняемый код программы после определяемых пользователем функций в программном файле. Только другие определяемые пользователем функции, процедуры, и определения класса могут следовать за первой командой FUNCTION ИЛИ PROCEDURE в файле.

Замечания

По умолчанию, параметры передаются в функции по значению. Для информации о передаче параметров в функцию по ссылке, см. SET UDFPARMS .

Когда Вы задаете команду DO с именем функции, Visual FoxPro ищет функции в следующем порядке:

  1. Файл, содержащий команду DO.

  2. Процедурные Файлы открытые с помощью SET PROCEDURE.

    Для подробной информации, см. SET PROCEDURE Команда .

  3. Программные файлы в цепочке выполнения.

    Visual FoxPro ищет программные файлы в порядке от последней выполненной программы до первой выполненной программы.

  4. Автономный программный файл.

Если соответствующий программный файл найден, Visual FoxPro выполняет программу. Иначе, Visual FoxPro генерирует сообщение об ошибке.

Для выполнения функцию в определенном файле, включите предложение IN в команду DO.

Для информации об использовании команды FUNCTION при создании классов, см. DEFINE CLASS .

Пример

Этот пример создает класс объекта custom Hello и добавляет метод SayHello . Метод SayHello возвращает символьную строку "Привет Мир", которая отображается функцией MESSAGEBOX. Обратите внимание: код определения класса помещен после кода программы, который создает экземпляр объекта.

Скопировать код
Local oHello
oHello=CREATEOBJECT("Hello")
=MESSAGEBOX(oHello.SayHello(),48)
RELEASE oHello
* Class definition code
DEFINE CLASS Hello AS CUSTOM
FUNCTION SayHello
RETURN "Hello World"
ENDFUNC
ENDDEFINE

См. Также