replaceRange 方法

void replaceRange(
  1. int start,
  2. int end,
  3. Iterable<E> iterable
)
override

replacements 的元素替换指定范围内的元素。

startend 的范围内删除对象,然后在 start 处插入 replacements 的元素。

final numbers = <int>[1, 2, 3, 4, 5];
final replacements = [6, 7];
numbers.replaceRange(1, 4, replacements);
print(numbers); // [1, 6, 7, 5]

提供的范围,由 startend 指定,必须有效。如果 0 ≤ startendlength,则从 startend 的范围是有效的。一个空范围(end == start)也是有效的。

操作 list.replaceRange(start, end, replacements) 大约等同于

final numbers = <int>[1, 2, 3, 4, 5];
numbers.removeRange(1, 4);
final replacements = [6, 7];
numbers.insertAll(1, replacements);
print(numbers); // [1, 6, 7, 5]

但可能更高效。

列表必须是可增长的。此方法不适用于固定长度列表,即使 replacements 的元素数量与替换的范围相同。在这种情况下,请使用 setRange

实现

void replaceRange(int start, int end, Iterable<E> iterable) {
  throw new UnsupportedError("Cannot modify an immutable List.");
}