Topazdocs
Стандартная библиотека и среда

Операции с коллекциями

Канонический API, поведение, доказательства и ограничения: Операции с коллекциями.

Collection members разделяют безопасное чтение, explicit mutators, ordered snapshots, key constraints, порядок callback и faulting operations вместо использования host container как спецификации.

Канонический контракт

Array surface включает push, get, length, slice, join, search, sorting, higher-order methods, stack, insert/remove, reverse, retain, clear. Map даёт insert/get/getOr/remove, ordered keys/values/entries snapshots, size, membership, update, mapValues, filter, clear. Set даёт add/remove/contains, size, ordered toArray, union/intersection/difference и clear.

Публичная поверхность

Для мутирующих Array push/pop/clear/reverse/insert/removeAt/sort/sortBy/retain, Map insert/remove/clear/update и Set add/remove/clear нужен let mut. Чтения с возможным отсутствием возвращают Option. Map keys и Set elements следуют recursive keyability. Higher-order operations сохраняют заданный iteration order.

Наблюдаемое поведение

arr.get даёт None вне границ, direct index — fault. map.keys, values и entries — snapshots в insertion order; поздняя mutation их не меняет. Remove и reinsertion перемещают key/element в конец, update существующего Map value сохраняет порядок. Set algebra и sorting следуют объявленным constraints, не host hashing.

Текущая поддержка

Компилятор проверяет перечисленные члены Array, Map и Set: обобщённые типы, параметры, функции обратного вызова, результаты, свойства и требования к изменяемости. Методы языка среды не добавляются автоматически.

Ограничения и исключения

Выход за границы при прямом индексировании, неподходящие типы ключей Map и Set, изменение неизменяемой привязки, несовместимая функция обратного вызова, x in map, строковое .length и неизвестные члены являются ошибками. Методы коллекций не добавляют общее равенство для Map и Set.

Пример

TOPAZ
let mut scores: Map<string, int> = Map.new()
scores.insert("ada", 10)
scores.insert("lin", 12)

let ada = scores.get("ada")
let missing = scores.get("missing")
let keys = scores.keys
print("{ada}:{missing}:{keys}")

Связанные правила