# Интерфейс Sequence

(PECL ds >= 1.0.0)

## Введение

Последовательность описывает поведение, при котором значения распределены в одном, линейном порядке. В некоторых языках данное поведение описывается как "List". Это похоже на массив, в котором используются целочисленные ключи, за исключением нескольких моментов:

- Значения всегда проиндексированы по порядку [0, 1, 2, …, size - 1].
- Можно обращаться только к значениям индексированным в диапазоне [0, size - 1].

В каких случаях используется:

- Если вы хотите использовать массив, как список (не обращая внимания на ключи).
- Более эффективная альтернатива для SplDoublyLinkedList и SplFixedArray.

## Обзор интерфейса

interface Ds\Sequence extends Ds\Collection, ArrayAccess {
/* Методы */
abstract public function allocate(int `$capacity`): void
abstract public function apply(callable `$callback`): void
abstract public function capacity(): int
abstract public function contains(mixed `...$values`): bool
abstract public function filter(callable `$callback` = ?): Ds\Sequence
abstract public function find(mixed `$value`): mixed
abstract public function first(): mixed
abstract public function get(int `$index`): mixed
abstract public function insert(int `$index`, mixed `...$values`): void
abstract public function join(string `$glue` = ?): string
abstract public function last(): mixed
abstract public function map(callable `$callback`): Ds\Sequence
abstract public function merge(mixed `$values`): Ds\Sequence
abstract public function pop(): mixed
abstract public function push(mixed `...$values`): void
abstract public function reduce(callable `$callback`, mixed `$initial` = ?): mixed
abstract public function remove(int `$index`): mixed
abstract public function reverse(): void
abstract public function reversed(): Ds\Sequence
abstract public function rotate(int `$rotations`): void
abstract public function set(int `$index`, mixed `$value`): void
abstract public function shift(): mixed
abstract public function slice(int `$index`, int `$length` = ?): Ds\Sequence
abstract public function sort(callable `$comparator` = ?): void
abstract public function sorted(callable `$comparator` = ?): Ds\Sequence
abstract public function sum(): int|float
abstract public function unshift(mixed `$values` = ?): void
/* Наследуемые методы */
public function Ds\Collection::clear(): void
public function Ds\Collection::copy(): Ds\Collection
public function Ds\Collection::isEmpty(): bool
public function Ds\Collection::toArray(): array
public function Countable::count(): int
public function IteratorAggregate::getIterator(): Traversable
public function JsonSerializable::jsonSerialize(): mixed
public function ArrayAccess::offsetExists(mixed `$offset`): bool
public function ArrayAccess::offsetGet(mixed `$offset`): mixed
public function ArrayAccess::offsetSet(mixed `$offset`, mixed `$value`): void
public function ArrayAccess::offsetUnset(mixed `$offset`): void
}

## Список изменений

Версия | Описание
--- | ---
PECL ds 1.3.0 | Теперь класс реализует ArrayAccess.

## Содержание

- Ds\Sequence::allocate — Выделение памяти под указанную вместимость
- Ds\Sequence::apply — Обновляет значения последовательности через callback-функцию
- Ds\Sequence::capacity — Возвращает текущую вместимость
- Ds\Sequence::contains — Проверяет, содержатся ли в коллекции заданные значения
- Ds\Sequence::filter — Создаёт новую последовательность из элементов, выбранных с помощью заданной callback-функции
- Ds\Sequence::find — Поиск индекса по значению
- Ds\Sequence::first — Возвращает первый элемент коллекции
- Ds\Sequence::get — Возвращает значение по индексу
- Ds\Sequence::insert — Вставляет значения по указанному индексу
- Ds\Sequence::join — Склеивает все значения в строку
- Ds\Sequence::last — Возвращает последнее значение коллекции
- Ds\Sequence::map — Возвращает результат применения callback-функции ко всем значениям коллекции
- Ds\Sequence::merge — Возвращает результат добавления всех заданных значений в коллекцию
- Ds\Sequence::pop — Удаляет и возвращает последнее значение
- Ds\Sequence::push — Добавляет значения в конец последовательности
- Ds\Sequence::reduce — Схлопывает коллекцию до одного значения используя callback-функцию
- Ds\Sequence::remove — Удаляет и возвращает значение по индексу
- Ds\Sequence::reverse — Переворачивает текущую коллекцию
- Ds\Sequence::reversed — Возвращает перевёрнутую копию коллекции
- Ds\Sequence::rotate — Перематывает последовательность на заданное число значений
- Ds\Sequence::set — Заменяет значение по указанному индексу
- Ds\Sequence::shift — Удаляет и возвращает первое значение
- Ds\Sequence::slice — Возвращает под-коллекцию из заданного диапазона
- Ds\Sequence::sort — Сортирует коллекцию
- Ds\Sequence::sorted — Возвращает отсортированную по значению копию коллекции
- Ds\Sequence::sum — Возвращает сумму всех значений коллекции
- Ds\Sequence::unshift — Добавляет значения в начало последовательности

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open