Разделы
- 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.3. Переменные
Контроль точности создания и обращения к переменным
Переменные используются для хранения результата.
При объявленном дефайне S4G_CREATE_VAR
создание переменных происходит посредством указания перед именем переменной символа $
, то есть $var
создает переменную var
. Дальнейшее обращение к созданной переменной требует отсутствия $
. Пример:
$var = 10; print(var); var = 20;
Если при обращении к переменной var
она не будет найдена во всех доступных контекстах то будет выдано соответствующее сообщение об ошибке, также в случае если создаваемая переменная уже имеется в каком-либо доступном контексте, то также будет выдано соответствующее сообщение об ошибке.
Однако это опционально. Чтобы убрать действие символа $
, объявлять S4G_CREATE_VAR
не надо, либо нужно убрать его определение.
s4g предоставляет 4 вида переменных (по области видимости):
Глобальное пространство имен (по умолчанию _g
определено в макросе S4G_GLOBAL_NM
). Оно доступно как для скриптера так и для C(++) программиста.
Локальное пространство имен возникает тогда когда происходит выполнение блочных операций (функции, условия, циклы). Доступно только для скриптера в неявной форме.
Системное/языковое пространство имен существует для более быстрого доступа, как в плане написания кода, так и в плане производительности. Используется для дополнительных языковых функций и констант, скриптеру доступно в неявной форме только для чтения, программисту C(++) доступно для чтения/записи.
Поля таблиц, все вышеперечисленное является, по сути, операциями с таблицами.
До явного присвоения переменной значения она имеет тип null
.
При выполнении тела скрипта (не функции) глобальное пространство имен доступно по умолчанию и не требует явного его указания. При выполнении блочных операций (функции и управляющие конструкции (условия, циклы)) оно доступно только через _g
(определено в макросе S4G_GLOBAL_NM
):
$var; //создание переменной, которая по умолчанию равна null var = 10; //явное присвоение десятичного знакового числа function qwert() {//создание функции _g.var = 20; //обращение к глобальному var через явное обращение к глобальному пространству имен }