Объекты

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

Типы

fn cmpobjfunc(obj, obj) int

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

Операторы

Функции

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.

Last updated