Links

Объекты

Тип obj служит для хранения значений следующих типов - int, bool, float, str, arr.obj, map.obj. Если объекту не присвоено никакое значение, то он равен nil. Объекту можно присваивать значения типа, который отличается от текущего. Здесь описаны операторы и функции для работы с объектами.

Типы

fn cmpobjfunc(obj, obj) int

Тип функций cmpobjtype служит для сравнения двух объектов. Функции этого типа используются для сортировки объектов в массиве.

Операторы

Оператор
Результат
Описание
*obj
int
Если объект является arr.obj или map.obj, то возвращается количество элементов в массиве. В противном случае, возвращается 0.
obj ?
bool
Вызов bool(obj).
obj = arr.typename
obj
Присваивание массива объекту.
obj = bool
obj
Присваивание логического значения объекту.
obj = float
obj
Присваивание десятичного числа объекту.
obj = int
obj
Присваивание числа объекту.
obj = map.typename
obj
Присваивание ассоциативного массива объекту.
obj = obj
obj
Присваивание объектов.
obj = str
obj
Присваивание строки объекту.
obj += obj
obj
Добавление объекта к массиву объектов.
obj &= obj
obj
Создать клон объекта. Новая переменная будет работать с тем же набором данных.
obj [ int/str ]
obj
Присвоить/получить значение массива по индексу. Если объект не является arr.obj или map.obj, то возвращается ошибка.

Функции

arr(obj o) arr.obj

Функция arr возвращает массив объектов. Объект o должен быть массивом, в противном случае возвращается ошибка. При вызове функции не создается нового массива, а возвращается текущий массив, который содержит объект o.

arrstr(obj o) arr.str

Функция arrstr конвертирует массив объектов в массив строк. Объект o должен быть массивом, в противном случае возвращается ошибка. Функция возвращает полученный массив строк.

bool(obj o) bool

Функция bool возвращает логическое значение текущего типа. Например, если объект содержит строку, то возвращается результат вызова bool(str). Если объект не определен, то возвращается ошибка.

bool(obj o, bool def) bool

Функция bool возвращает логическое значение текущего типа. Если объект не определен, то возвращается второй параметр.

float(obj o) float

Функция float конвертирует объект в действительное число. Объект должен содержать значение типа str, int, float, в противном случае, возвращается ошибка.

float(obj o, float def) float

Функция float конвертирует объект в действительное число. Если объект не определен, то возвращается второй параметр.

int(obj o) int

Функция int конвертирует объект в целое число. Объект должен содержать значение типа str, int, float, bool, в противном случае, возвращается ошибка.

int(obj o, int def) int

Функция int конвертирует объект в целое число. Если объект не определен, то возвращается второй параметр.

IsArray(obj o) bool

Функция IsArray возвращает true, если объект является массивом. В противном случае, функция возвращает false.

IsMap(obj o) bool

Функция IsMap возвращает true, если объект является ассоциативным массивом (map). В противном случае, функция возвращает false.

IsNil(obj o) bool

Функция IsNil возвращает true, если объект не определен (равен nil). В противном случае, функция возвращает false.

item(obj o, int i) obj

Функция item возвращает i-й элемент объекта. Объект должен иметь тип arr.obj. Если элемент отсутствует, то возвращается пустой объект.

item(obj o, str s) obj

Функция item возвращает значение ключа s. Объект должен иметь тип map.obj. Если элемент отсутствует, то возвращается пустой объект.

map(obj o) map.obj

Функция map возвращает ассоциативный массив объектов. Объект o должен быть ассоциативным массивом (map), в противном случае возвращается ошибка. При вызове функции не создается нового массива, а возвращается текущий map, который содержит объект o.

obj(arr.typename a) obj

Функция obj конвертирует массив типа arr в объект.

obj(bool b) obj

Функция obj создает объект с указанными логическим значением.

obj(float f) obj

Функция obj создает объект с указанными float значением.

obj(int i) obj

Функция obj создает объект с указанными int значением.

obj(map.typename m) obj

Функция obj конвертирует ассоциативный массив типа map в объект.

obj(str s) obj

Функция obj создает объект с указанными str значением.

Sort(arr.obj o, cmpobjfunc cmpfunc) arr.obj

Функция Sort сортирует массив объектов и возвращает его. Сортировка происходит с помощью функции типа cmpobjfunc.
func mySort(obj left, obj right) int {
if str(left) < str(right) : return -1
if str(left) > str(right) : return 1
return 0
}
run str {
arr a = {"qwr","7","10","ab","тест","абв", "ka"}
obj o = a
Sort( arr(o), &mySort.cmpobjfunc )
...
}

str(obj o) str

Функция str преобразует объект в строку и возвращает её.

str(obj o, str def) str

Функция str преобразует объект в строку и возвращает её. Если объект не определен, то возвращается второй параметр.

Type(obj o) str

Функция Type возвращает тип значения указанного объекта. Могут возвращаться следующие типы: int, bool, float, str, arr.obj, map.obj. Если объект не определен, то возвращается nil.