Class: CircularList

Defined in: lib/circular_list.coffee
Inherits: CSObject

Overview

Описывает циклический список, в котором нет начала или конца, есть только текущий указатель.

Property Summary

(Node) _p
указатель на текущий узел
(Number) length
@read-only длина списка

Class Method Summary

Instance Method Summary

Inherited Method Summary

Methods inherited from CSObject

#destructor

Class Method Details

. (CircularList) fromArray(array)

Создать список из массива array с указателем на первый элемент массива

Parameters:

  • array ( Array<*> ) массив из которых создаём список

Throws:

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

Returns:

Constructor Details

# (void) constructor()

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

Throws:

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

Instance Method Details

# (CircularList) append(some)

Присоединяет элемент следом за указателем, т.е. значение становится доступным при вызове .next().get().

Parameters:

  • some ( * ) сущность для присоединения

Throws:

  • ( TypeError ) — если аргументов более одного, т.к. есть add
  • ( TypeError ) — если нет аргументов

Returns:

# (CircularList) prepend(some)

Присоединяет элемент перед текущим, т.е. значение становится достыпным при вызове .prev().get()

Parameters:

  • some ( * ) сущность для присоединения

Throws:

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

Returns:

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

Присоединяет список аргументов после текущего. Замечу, что принимает на вход множество аргументов, а не массив аргументов.

Parameters:

  • arguments... ( * ) сущности для присоединения

Throws:

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

Returns:

# (CircularList) go(step)

Позволяет перейти по списку вперёд или назад на step шагов. Чтобы не кружить по списку, количесво шагов будет оптимизированно.

Parameters:

  • step ( Number ) количество шагов: если > 0, то вперёд, иначе -- назад

Throws:

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

Returns:

# (CircularList) next()

Перейти к следующему узлу в списке

Throws:

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

Returns:

# (CircularList) prev()

Перейти к предыдущему элементу

Throws:

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

Returns:

# (CircularList) get()

Получить значение текущего элемента

Throws:

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

Returns:

# (CircularList) currentNode()

Получить текущий узел

Throws:

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

Returns:

# (CircularList) set(some)

Установить значение текущего элемента

Parameters:

  • some ( * ) новое значение

Throws:

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

Returns:

# (CircularList|Node) erase(returnNodes = true)

Очистить список от текущего значения и вернуть его, если returnNodes == true

Parameters:

  • returnNodes ( Boolean ) возвращать ли удалённый узел

Throws:

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

Returns:

  • ( CircularList|Node ) — this|элемент

# (CircularList) clear()

Очистить список ото всех значений

Throws:

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

Returns:

# (null) destructor()

Удалить список и очистить все линки

Returns:

  • null

    Quickly fuzzy find classes, mixins, methods, file:

    Control the navigation frame:

    You can focus and blur the search input: