Специальные функции

Специальные функции определяются с помощью ключевого слова fun и не могут быть вызваны стандартным способом.

get

let v = map[k]

Индексатор для чтения.

set

map[k] = v

Индексатор для записи.

get_ptr

if array[i].is_occupied then
    ...

Индексатор для чтения, возвращающий указатель на значение вместо самого значения. Используется для вызова методов на структурах и доступа к их полям.

get_mut_ptr

array[i].is_occupied = true

То же что и get_ptr, но возвращает изменяемый указатель.

hash

Вычисляет хеш и записывает результат в state.

fun hash<T> (list : List<T>) (state : HashState) =
    for i = 0 until list.size do
        hash@ list[i] state

hash@ вызывает хеш-функцию для первого аргумента.

let value = list@hash

Привязка value содержит хеш объекта list.

to_string

Превращает значение в строку.

from_slice

fun from_slice<T> (slice : Slice<T>) : List<T> = List<T>.from slice

def list_of<T> (list : List<T> @vararg) = list

Во время вызова list_of получает срез Slice<T> массива аргументов, превращенный в List<T> с помощью функции from_slice.

destruct

Деструктор выполняется перед освобождением памяти. Здесь можно устранить слабые ссылки на объект, например контейнер может очистить поле parent содержащихся в нём элементов.