Разделы
- 1. Введение
- 2. Описание языка
- 3. Интерфейс программирования приложений (API)
- 3.1. Стек
- 3.2. Резервация памяти
- 3.3. Сообщения
- 3.4. Типы данных
- 3.5. Функции
- 3.5.1. Базовые функции скриптоввой системы
- 3.5.2. Функции для вставки на вершину стека значения
- 3.5.3. Перевод значений со стека в скриптовую ситему (экспорт (stack => script))
- 3.5.4. Функции для получения со стека (stack => C(++))
- 3.5.5. Функции для работы с аргументами в вызванной C(++) функции из скриптовой системы (script => C(++) function)
- 3.5.6. Функции отладки (DEBUG)
- 3.5.7. Функции для работы с препроцессом
- 4. Стандартная библиотека
2.7.4. Вызов функции
Синтаксис:
name_func(arg_list);
Для начала необходимо указать имя функции. Сама функция может находиться в любом доступном пространстве имен (то есть в любой доступной таблице). Правила обращения к функции (для вызова) в таблицах стандартны.
Далее следует открывающая скобка, после нее список аргументов через запятую, где аргументом может быть любое простое выражение, после аргументов закрывающая скобка.
При вызове функции в момент присвоения переменной данных в таблице, в случае, если функция не возвращает аргументы, переменной будет присвоено значение null
:
$table = {$var1 = func()};
Если func
не вернет значения то table.var1
будет присвоено null
.
То же самое произойдет и в случае, когда вызов функции используется для получения аргумента:
func(func2());
Первому аргументы будет присвоено null
если func2
не вернет значений.
По умолчанию каждая функция возвращает значение. Если этого не происходит, то при завершении работы функции она возвращает null
.
Передавать можно только одно значение.
s4g поддерживает рекурсивные вызовы функций. Максимальная вложенность вызовов регулируется макроопределением S4G_MAX_CALL
которое определено в файле s4g.h
. На стек вызовов исполняющей программы это никак не влияет, виртуальная машина s4g обеспечивает независимость своего стека вызовов.