# La interfaz Sequence

(PECL ds >= 1.0.0)

## Introducción

Una Sequence describe el comportamiento de los valores dispuestos en una sola dimensión lineal. Algunos lenguajes se refieren a esto como una "Lista". Es similar a un array que utiliza claves enteras incrementales, con la excepción de algunas características:

- Los valores siempre serán indexados como [0, 1, 2, …, size - 1].
- Solo los valores por índice en el rango [0, size - 1] están permitidos.

Casos de uso:

- En cualquier lugar donde se utilizaría un array como lista (sin preocuparse por las claves).
- Una alternativa más eficiente a SplDoublyLinkedList y SplFixedArray.

## Sinopsis de la Interfaz

interface Ds\Sequence extends Ds\Collection, ArrayAccess {
/* Métodos */
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
/* Métodos heredados */
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
}

## Historial de cambios

Versión | Descripción
--- | ---
PECL ds 1.3.0 | Esta interfaz ahora extiende ArrayAccess.

## Tabla de contenidos

- Ds\Sequence::allocate — Asigna suficiente memoria para una capacidad requerida
- Ds\Sequence::apply — Actualiza todos los valores aplicando una retrollamada a cada valor
- Ds\Sequence::capacity — Devuelve la capacidad actual
- Ds\Sequence::contains — Determina si la secuencia contiene valores dados
- Ds\Sequence::filter — Crear una nueva secuencia utilizando un callable para determinar qué valores incluir
- Ds\Sequence::find — Intenta encontrar el índice de un valor.
- Ds\Sequence::first — Devuelve el primer valor de la secuencia
- Ds\Sequence::get — Devuelve el valor en un índice dado
- Ds\Sequence::insert — Inserta valores en un índice dado
- Ds\Sequence::join — Reúne todos los valores en un string
- Ds\Sequence::last — Devuelve el último valor
- Ds\Sequence::map — Devuelve el resultado de la aplicación de una retrollamada a cada valor
- Ds\Sequence::merge — Devuelve el resultado de la adición de todos los valores de la secuencia
- Ds\Sequence::pop — Elimina y devuelve el último valor
- Ds\Sequence::push — Añade valores al final de la secuencia
- Ds\Sequence::reduce — Reduce la secuencia a un solo valor utilizando una función de retrollamada
- Ds\Sequence::remove — Elimina y devuelve un valor por índice
- Ds\Sequence::reverse — Invierte la secuencia en el lugar
- Ds\Sequence::reversed — Devuelve una copia invertida
- Ds\Sequence::rotate — Rota la secuencia un número dado de rotaciones
- Ds\Sequence::set — Actualiza un valor en un índice dado
- Ds\Sequence::shift — Elimina y devuelve el primer valor
- Ds\Sequence::slice — Devuelve una subsecuencia de un rango dado
- Ds\Sequence::sort — Ordena la secuencia en su lugar
- Ds\Sequence::sorted — Devuelve una copia ordenada
- Ds\Sequence::sum — Devuelve la suma de todos los valores de la secuencia
- Ds\Sequence::unshift — Añade valores al inicio de la secuencia

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