Spec-Zone.ru › Pony

HashMap[K: K, V: V, H: HashFunction[K] val]

[Source]

Ассоциативный массив с квадратическим зондированием. Перераспределение происходит при коэффициенте загрузки 0,75. Размеры перераспределённого массива увеличиваются в 2 раза. Функцию хеширования можно подставить в тип, чтобы создать различные типы словарей.

class ref HashMap[K: K, V: V, H: HashFunction[K] val]

Конструкторы

create

[Source]

Создаёт массив с пространством для предварительной выделенной памяти (prealloc) элементов без перераспределения. По умолчанию равно 6.

new ref create(
  prealloc: USize val = 6)
: HashMap[K, V, H] ref^

Параметры

  • prealloc: USize val = 6

Возвращает

  • HashMap[K, V, H] ref^

Общедоступные функции

size

[Source]

Количество элементов в словаре.

fun box size()
: USize val

Возвращает

  • USize val

space

[Source]

Доступное пространство в словаре. Перераспределение произойдёт, когда размер (size) / пространство (space) ≥ 0,75.

fun box space()
: USize val

Возвращает

  • USize val

apply

[Source]

Получает значение из словаря. Возбуждает ошибку, если такого элемента нет.

fun box apply(
  key: box->K!)
: this->V ?

Параметры

  • key: box->K!

Возвращает

  • this->V ?

update

[Source]

Устанавливает значение в словаре. Возвращает старое значение, если оно существовало, иначе None. Если предыдущего значения не было, может произойти перераспределение.

fun ref update(
  key: K,
  value: V)
: (V^ | None val)

Параметры

  • key: K
  • value: V

Возвращает

  • (V^ | None val)

upsert

[Source]

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

Например, если у нас есть словарь с I64 значениями и мы хотим добавить 4 к текущему значению для ключа "test", которое, скажем, сейчас равно 2. Мы вызываем

m.upsert("test", 4, {(current, provided) => current + provided })

Это изменяет значение, связанное с "test", на 6.

Если мы ещё не добавили ключ "new-key" в словарь и вызываем

m.upsert("new-key", 4, {(current, provided) => current + provided })

то "new-key" добавляется в словарь со значением 4.

Возвращает значение, которому мы установили ключ.

fun ref upsert(
  key: K,
  value: V,
  f: {(V, V): V^}[K, V, H] box)
: V

Параметры

  • key: K
  • value: V
  • f: {(V, V): V^}[K, V, H] box

Возвращает

  • V

insert

[Source]

Устанавливает значение в словаре. Возвращает новое значение, позволяя его повторное использование.

fun ref insert(
  key: K,
  value: V)
: V!

Параметры

  • key: K
  • value: V

Возвращает

  • V!

insert_if_absent

[Source]

Устанавливает значение в словаре, если ключ в словаре ещё не существует. Экономит дополнительный поиск при выполнении операций вроде:

if not my_map.contains(my_key) then
  my_map(my_key) = my_value
end

Возвращает значение, также как и insert, позволяя использовать 'insert_if_absent' как прямую замену для insert.

fun ref insert_if_absent(
  key: K,
  value: V)
: V

Параметры

  • key: K
  • value: V

Возвращает

  • V

remove

[Source]

Удаляет значение из словаря и возвращает его. Возбуждает ошибку, если для данного ключа значения не было.

fun ref remove(
  key: box->K!)
: (K^ , V^) ?

Параметры

  • key: box->K!

Возвращает

  • (K^ , V^) ?

get_or_else

[Source]

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

fun box get_or_else(
  key: box->K!,
  alt: this->V)
: this->V

Параметры

  • key: box->K!
  • alt: this->V

Возвращает

  • this->V

contains

[Source]

Проверяет, содержит ли словарь ключ k.

fun box contains(
  k: box->K!)
: Bool val

Параметры

  • k: box->K!

Возвращает

  • Bool val

concat

[Source]

Добавляет пары K, V из итератора в словарь.

fun ref concat(
  iter: Iterator[(K^ , V^)] ref)
: None val

Параметры

  • iter: Iterator[(K^ , V^)] ref

Возвращает

  • None val

add[optional H2: HashFunction[this->K!] val]

[Source]

Этот словарь с новым сопоставлением (ключ, значение).

fun box add[optional H2: HashFunction[this->K!] val](
  key: this->K!,
  value: this->V!)
: HashMap[this->K!, this->V!, H2] ref^

Параметры

  • key: this->K!
  • value: this->V!

Возвращает

  • HashMap[this->K!, this->V!, H2] ref^

sub[optional H2: HashFunction[this->K!] val]

[Source]

Этот словарь без заданного ключа.

fun box sub[optional H2: HashFunction[this->K!] val](
  key: this->K!)
: HashMap[this->K!, this->V!, H2] ref^

Параметры

  • key: this->K!

Возвращает

  • HashMap[this->K!, this->V!, H2] ref^

next_index

[Source]

Для заданного индекса возвращает следующий индекс, имеющий заполненный ключ и значение. Возбуждает ошибку, если такого индекса нет.

fun box next_index(
  prev: USize val = call)
: USize val ?

Параметры

  • prev: USize val = call

Возвращает

  • USize val ?

index

[Source]

Возвращает ключ и значение по заданному индексу. Возбуждает ошибку, если индекс не заполнен.

fun box index(
  i: USize val)
: (this->K , this->V) ?

Параметры

  • i: USize val

Возвращает

  • (this->K , this->V) ?

compact

[Source]

Минимизировать используемую память для словаря.

fun ref compact()
: None val

Возвращает

  • None val

clone[optional H2: HashFunction[this->K!] val]

[Source]

Создать копию. Типы ключей и значений могут отличаться из-за алиасинга и адаптации представления.

fun box clone[optional H2: HashFunction[this->K!] val]()
: HashMap[this->K!, this->V!, H2] ref^

Возвращает

  • HashMap[this->K!, this->V!, H2] ref^

clear

[Source]

Удалить все записи.

fun ref clear()
: None val

Возвращает

  • None val

keys

[Source]

Возвратить итератор по ключам.

fun box keys()
: MapKeys[K, V, H, this->HashMap[K, V, H] ref] ref^

Возвращает

  • MapKeys[K, V, H, this->HashMap[K, V, H] ref] ref^

values

[Source]

Возвратить итератор по значениям.

fun box values()
: MapValues[K, V, H, this->HashMap[K, V, H] ref] ref^

Возвращает

  • MapValues[K, V, H, this->HashMap[K, V, H] ref] ref^

pairs

[Source]

Возвратить итератор по парам ключ-значение.

fun box pairs()
: MapPairs[K, V, H, this->HashMap[K, V, H] ref] ref^

Возвращает

  • MapPairs[K, V, H, this->HashMap[K, V, H] ref] ref^

© 2016-2020, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/collections-HashMap

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API