Spec-Zone.ru › Dart 2

dart:core

Метод copyRange<T>

void copyRange<T>(
  1. List<T> target,
  2. int at,
  3. List<T> source,
  4. [int? start,
  5. int? end]
)

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

Это вспомогательная функция, которая может использоваться для реализации методов, таких как setRange.

Диапазон от start до end должен быть допустимым диапазоном source, и должно быть достаточно места для end - start элементов с позиции at. Если start опущено, оно по умолчанию равно нулю. Если end опущено, оно по умолчанию равно source.length.

Если source и target являются одним и тем же списком, перекрывающиеся диапазоны источника и назначения учитываются таким образом, что диапазон назначения содержит начальное содержимое диапазона источника. В противном случае порядок копирования элементов не гарантируется.

Реализация

static void copyRange<T>(List<T> target, int at, List<T> source,
    [int? start, int? end]) {
  start ??= 0;
  end = RangeError.checkValidRange(start, end, source.length);
  if (end == null) {
    // TODO(dart-lang/language#440): Remove when promotion works.
    throw "unreachable";
  }
  int length = end - start;
  if (target.length < at + length) {
    throw ArgumentError.value(target, "target",
        "Not big enough to hold $length elements at position $at");
  }
  if (!identical(source, target) || start >= at) {
    for (int i = 0; i < length; i++) {
      target[at + i] = source[start + i];
    }
  } else {
    for (int i = length; --i >= 0;) {
      target[at + i] = source[start + i];
    }
  }
}

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

Spec-Zone.ru

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