Доступ к переменной заданного типа по ссылке.
~<тип данных>(<имя переменной>); ~(< имя переменной >)
Имя | Тип данных | Описание |
---|---|---|
тип данных | Название типа данных | |
имя переменной | complex | Имя переменной, на которую была получена ссылка. Интерпретируется скриптовым языком, как комплексная переменная, но при этом само отображаемое значение возвращаемой переменной не имеет смысла. |
Доступ к переменной заданного типа по ссылке. Используются типизированные конструкции для доступа к данным разного типа:
a = ~integer(i) - возвращает данные целого по ссылке;
a = ~double(i) - вещественного;
a = ~complex(i) - комплексного;
a = ~intarray(i) - целочисленный массив;
a = ~array(i) - действительный массив;
a = ~matrix(i) - действительная матрица;
a = ~boolean(i) - двоичное;
a = ~string(i) - стока;
a = ~point(i) - двумерная геометрическая точка;
a = ~color(i) - цвет;
a = ~carray(i) - комплексный вектор;
a = ~cmatrix(i) - комплексная матрица;
Имя | Тип данных | Описание |
---|---|---|
a | Функция возвращает значение переменной, к которой происходит доступ, если функция в правой части выражения, функциия присваивается значение, если функция в левой части. |
var i=10, arr:array; ptr = @i; //получение ссылки ptr1 = @arr; d = ~double(ptr); //доступ по ссылке w = ~array(ptr1); ~double(ptr) = 1000;
В процессе выполнения примера создается ссылка ptr на переменную i и ссылка ptr1 на массив arr. При помощи функции ~ происходит доступ по ссылке к переменным i и arr. Переменной i по ссылке ptr присваивается значение 1000.
var a: double; a = 10; aptr = @a; // Получение ссылки на переменную var b: double; //Получение значения переменной по ссылке с использованием нетипизированного указателя b = ~(aptr); b = b + 1; //Присвоение по ссылке с использованием нетипизированного доступа к указателю ~(aptr) = b + 1;
В процессе выполнения примера создается ссылка aptr на переменную a и затем получение ее значения а также присваивание ей нового значения с использованием нетипизированного указателя.
initialization //В этом массиве мы будем хранить указатели на матрицы //он должен быть комплексного типа var ptrs_array: carray; //Создание ptrs_array = 100#0; for(i=1,100) begin //Вот так мы выделяем память ptrs_array[i]=new~matrix; //Присваиваем значение матрицы ~matrix(ptrs_array[i])=[[1,2],[3,1]]; end; //Чтение - тут мы суммируем детерминанты матриц summ = 0; for(i=1,100) begin dd = det(~matrix(ptrs_array[i])); summ = summ + dd; end; //Уничтожение объектов после того, как мы закончили их использование for(i=1,100) begin dispose(ptrs_array[i]); end; end;
Пример показывает использование массива указателей на 100 матриц и последующее обращение к каждой из них.