Class: List

Defined in: lib/list.coffee
Inherits: CSObject

Overview

Список на основе узлов Node. Есть внутренний указатель, который перемещается методами #next(), #prev(), #begin(), #end() и значение получается всегда через метод #get().

В результате вставок указатель всегда указывает на тот же самый элемент, а индекс указателя #index даптивно подстраивается. То же самое по возможности и при изъятии узла, но если изымается элемент, на котором стоит указатель, тогда он смещается к ближайшему узлу в сторону начала, а если это не возможно, то ближайшему узлу в сторону конца.

Property Summary

(Node) _f
начало очереди для взятия O(1)
(Node) _b
конец очереди для добавления O(1)
(Node) _p
Указатель на текущий элемент
(Number) length
@read-only длина очереди

Class Method Summary

Instance Method Summary

Inherited Method Summary

Methods inherited from CSObject

#destructor

Class Method Details

. (List) fromArray(array)

Создаёт список на основе массива с указателем на первом элементе

Parameters:

  • array ( Array<*> ) массив сущностей

Throws:

  • ( Error ) — если аргументов нет или больше одного
  • ( TypeError ) — если array не массив

Returns:

Constructor Details

# (void) constructor()

Создаёт пустой список, устанавливает значения

Throws:

  • ( TypeError ) — при наличии аргументов

Instance Method Details

# (List) pushBack(some)

Добавление одного элемента в список в конец

Parameters:

  • some ( * ) сущность для добавления в конец

Throws:

  • ( TypeError ) — если сущности нет или она не одна

Returns:

# (List) pushFront(some)

Добавление одной сущности some в начало списка. При этом указатль остаётся на том же элементе, где и был, а в случае пустого индекса указывает на новый узел. Индекс же следит за указателем всегда.

Parameters:

  • some ( * ) сущность для вставки

Throws:

  • ( TypeError ) — если сущности нет или она не одна

Returns:

# (*) popFront()

Взятие первого элемента из очереди. Указатель не смещается, если не удалён элемент указателя. Если же удалён, то он переходит на предыдущий элемент.

Throws:

  • ( Error ) — если список пуст
  • ( TypeError ) — если переданы аргументы

Returns:

  • ( * ) — some значение первого узла

# (*) popBack()

Изымает и возвращает последнее значение.

Throws:

  • ( Error ) — если список пуст
  • ( TypeError ) — если переданы аргументы

Returns:

  • ( * ) — some значение последнего узла

# (List) append(some)

Присоединяет сущность some после указателя.

Parameters:

  • some ( * ) вставляемое значение

Throws:

  • ( TypeError ) — если нет сущности или она не одна

Returns:

# (List) prepend(some)

Присоединяет сущность some перед указателем.

Parameters:

  • some ( * ) вставляемое значение

Throws:

  • ( TypeError ) — если нет сущности или она не одна

Returns:

# (List) add(first, list...)

Присоединяет сущности some в самый конец списка

Parameters:

  • some... ( *... ) добавляемые значения подряд через зяпятую

Throws:

  • ( TypeError ) — если нет ни одной сущности

Returns:

# (List|null) go(step)

Перемещает указатель на step шагов относительно текущего положения. Если step < 0 тогда двигаемся к началу, а иначе к концу списка.

Если шаги выходят за рамки, то возвращается null.

Parameters:

  • step ( Number ) на сколько шагов идём и в какую сторону

Throws:

  • ( Error ) — если не указан step или аргументов больше 1
  • ( TypeError ) — если шаги указаны не числом

Returns:

  • ( List|null ) — this или признак выхода за границы

# (List|null) next()

То же, что и #go(1)

Throws:

  • ( Error ) — если переданы аргументы

Returns:

  • ( List|null ) — this или признак, что указатель уже в конце

# (List|null) prev()

То же, что и #go(-1)

Throws:

  • ( Error ) — если переданы аргументы

Returns:

  • ( List|null ) — this или признак, что указатель уже в начале

# (List|null) begin()

Перемещает указатель на самый первый узел

Throws:

  • ( Error ) — если переданы аргументы

Returns:

  • ( List|null ) — this или признак пустого списка

# (List|null) end()

Перемещает указатель на самый последний узел

Throws:

  • ( Error ) — если переданы аргументы

Returns:

  • ( List|null ) — this или признак пустого списка

# (*) getFront()

Возвращает значение первого узла без смещения указателя и без изменений списка.

Throws:

  • ( Error ) — если список пуст или переданы аругменты

Returns:

  • ( * ) — значение первого узла

# (*) getBack()

Возвращает значение последнего узла без смещения указателя и без изменения списка.

Throws:

  • ( Error ) — если список пуст или переданы аругменты

Returns:

  • ( * ) — значение последнего узла

# (*) get()

Возвращает значение узла "под" указателем, не меняя список

Throws:

  • ( Error ) — если список пуст или переданы аругменты

Returns:

  • ( * ) — значение узла указателя

# (*) currentNode()

Возвразает сам узел указателя

Throws:

  • ( Error ) — если список пуст или переданы аругменты

Returns:

  • ( * ) — узел указателя

# (List) swap(rev)

Переставляет местами значения узлов (след./пред. относительно указателя). Если rev не равен true, томеняемся со следующим узлом от указателя, иначе -- с прудыдущим.

Throws:

  • ( Error ) — если в списке менее 2-ух элементов
  • ( Error ) — если пытаемся махнуться со слледующим в конце
  • ( Error ) — если пытаемся махнуться с предыдущим в начале

Returns:

# (List) set(some)

Устанавливает значение указателя на some

Throws:

  • ( Error ) — если список пуст или аргументов не 1

Returns:

~ (List|Array<Node>) erase(start, end, returnNodes)
~ (List|Array<Node>) erase(start, returnNodes)

Удаляет элемент или несколько из списка, начиная с позиции start и до позиции end (от начала), если returnNodes равна true, то удалённые узлы вернутся в виде массива из метода. Если end не установлено, то удаляется только элемент с индексом start

Overloads:

~ (List|Array<Node>) erase(start, end, returnNodes)

Удаление диапазона от start до end включительно

Parameters:

  • start ( Number ) начальная позиция для удаления
  • end ( Number ) последняя позиция
  • returnNodes ( Boolean ) возвращать ли узлы [default = no]

Throws:

  • ( RangeError ) — если start < 0 или end >= #length
  • ( RangeError ) — если start > end
  • ( TypeError ) — если аргументов многовато
  • ( TypeError ) — если типы аргументов не правильные

Returns:

  • ( List|Array<Node> ) — this или массив удалённых узлов, если returnNodes равен yes

~ (List|Array<Node>) erase(start, returnNodes)

Удаление диапазона от start до end включительно

Parameters:

  • start ( Number ) начальная позиция для удаления
  • returnNodes ( Boolean ) возвращать ли узлы [default = no]

Throws:

  • ( RangeError ) — если start < 0
  • ( TypeError ) — если аргументов многовато
  • ( TypeError ) — если типы аргументов не правильные

Returns:

  • ( List|Array<Node> ) — this или массив удалённых узлов, если returnNodes равен yes

# (List|null) clear()

Очистка всего списка. Если список пуст уже, то вернётся null

Throws:

  • ( TypeError ) — если переданы аргументы

Returns:

  • ( List|null ) — this или признак пустого списка

# (null) destructor()

Удаляет все ссылки и очищает список, разрушая все узлы

Returns:

  • null

    Quickly fuzzy find classes, mixins, methods, file:

    Control the navigation frame:

    You can focus and blur the search input: