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