Руководство разработчика

Параметры и результат функций

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

Стандартный механизм поддерживает два способа передачи параметров: параметр-значение (передача копированием) и параметр-переменная (передача ссылки). Если перед типом параметра или группы ничего не указано, то считается, что параметр или все параметры группы являются параметрами-значениями. В случае указания перед типом параметра или группы ключевого слова ПЕРЕМ считается, что параметр или все параметры группы являются параметрами-переменными. После типа параметра или группы следует двоеточие. За двоеточием следует имя параметра или перечисление имен (для группы) через запятую. Одиночные параметры или группы параметров разделяются между собой точками с запятой.

Синтаксис:

1) Параметр или группа параметров:

[ПЕРЕМ] <тип параметра или *>: <имя параметра1> [, >имя параметра2>, ... ]

2) Список параметров:

( <параметр или группа1> [; <параметр или группа2>; ...] )

Вместо типа параметра или группы параметров может быть записан символ *, что означает отключение проверки типов на этапе компиляции для этого параметра или группы.

Примеры:

// функция без результата и параметров
ФУНКЦИЯ ф1
//...
КОНЕЦ_ФУНКЦИИ

// функция с результатом и параметрами
// - функция принимает три параметра 
// - первые два имеют числовой тип и записаны ввиде группы
// - третий параметр имеет строковый тип 
// - все параметры являются параметрами-значениями
// - функция возвращает значение логического типа
ФУНКЦИЯ ЛОГИКА: ф2(ЧИСЛО: x, y; СТРОКА: текст)
//...
КОНЕЦ_ФУНКЦИИ

// функция с параметром-переменной 
ФУНКЦИЯ ф3(ПЕРЕМ СТРОКА: стр)
//...
КОНЕЦ_ФУНКЦИИ

// функция без проверки типов результата и параметра-значения
ФУНКЦИЯ *: ф4(*: парам)
//...
КОНЕЦ_ФУНКЦИИ

При вызове функций в качестве параметров-значений могут быть заданы произвольные выражения, тип которых соответствует типу параметра. Перед вызовом функции выражение параметра вычисляется, а полученное значение передается функции. В качестве параметра-переменной можно указать любую единицу языка, являющуюся переменной: общие и локальные переменные, поля объектов, элементы индексных переменных и индексных полей объектов. В общем случае обращение к такой переменной может содержать несколько имен, разделенных точками, квадратные скобки с выражениями индексов и т.п. Важно, что при этом способе передачи не происходит копирования значения. Этот факт можно использовать для ускорения передачи больших объектных значений. Основным назначением параметров-переменных все же является изменение значений указанных переменных функцией. Т.к. функция в качестве результата возвращает только одно значение, а часто необходимо получить несколько, то параметры-переменные позволяют не только передать в функцию, но и получить из функции необходимые данные.


См. также: