Как стать автором
Обновить

Как создать неизменяемый список – UnmodifiableListView или List.unmodifiable?

Для начала, давайте попробуем создать неизменяемый (именно unmodifiable, не путать с immutable) список разными способами:

// Dart version: 3.1.0 - 11.0.dev
import 'dart:collection';

void main() {
  // Выводимый тип - List<String>
  const colors = ['?', '?', '?', '?']; // или final

  // Выводимый тип - List<dynamic>
  final colors1 = List.unmodifiable(colors); 
  // используйте List<String>.unmodifiable(), чтобы тип выводился

  // Выводимый тип - UnmodifiableListView<String>
  final colors2 = UnmodifiableListView(colors);
}

Теперь давайте попробуем изменить первый элемент коллекции:

colors[0] = '?';
colors1[0] = '?';
colors2[0] = '?';

В каждом случае мы получим:

Unhandled Exception: Unsupported operation: Cannot modify an unmodifiable list

Неизменяемый список создан, что очень хорошо, однако, здесь есть подводные камни. Сложность алгоритма для List.unmodifiable – O(n), а для UnmodifiableListView – O(1)? Почему?

Продолжение в комментарии ↲

Всего голосов 3: ↑3 и ↓0+3
Комментарии3

Публикации

Истории

Ближайшие события