Spec-Zone.ru › Dart 2

dart:collection

Очередь с использованием списка<E>.Конструктор из элементов

ListQueue<E>.from(
  1. Iterable элементы
)

Создать очередь, содержащую все элементы.

Элементы добавляются в очередь, как с помощью addLast, в порядке, заданном переданным elements.iterator.

Все элементы должны быть экземплярами E. Передаваемый итерируемый объект может иметь любой тип элементов, поэтому этот конструктор может быть использован для приведения типа итерируемого объекта, например, так:

Queue<SuperType> superQueue = ...;
Queue<SubType> subQueue =
    ListQueue<SubType>.from(superQueue.whereType<SubType>());

Пример:

final numbers = <num>[10, 20, 30];
final queue = ListQueue<int>.from(numbers);
print(queue); // {10, 20, 30}

Реализация

factory ListQueue.from(Iterable<dynamic> elements) {
  if (elements is List<dynamic>) {
    int length = elements.length;
    ListQueue<E> queue = ListQueue<E>(length + 1);
    assert(queue._table.length > length);
    for (int i = 0; i < length; i++) {
      queue._table[i] = elements[i] as E;
    }
    queue._tail = length;
    return queue;
  } else {
    int capacity = _INITIAL_CAPACITY;
    if (elements is EfficientLengthIterable) {
      capacity = elements.length;
    }
    ListQueue<E> result = ListQueue<E>(capacity);
    for (final element in elements) {
      result.addLast(element as E);
    }
    return result;
  }
}

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-collection/ListQueue/ListQueue.from.html

Spec-Zone.ru

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