Разделы
- 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 обеспечивает независимость своего стека вызовов.
