Разделы

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