Специальные функции
Специальные функции определяются с помощью ключевого слова 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
содержащихся в нём элементов.