Что выведет код Junior Dart: типы и null-safety обновлено
Dart: final-список можно менять
Вопрос
Что выведет программа? По строке на каждый вывод.
void main() {
final list = [1, 2];
list.add(3);
print(list);
final fixed = List.unmodifiable(list);
try {
fixed.add(4);
} on UnsupportedError {
print('нельзя');
}
list.add(4);
print(fixed.length);
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: [1, 2, 3], нельзя, 3. final запрещает переприсвоить переменную, но не менять объект, поэтому add работает.
Что выведет
[1, 2, 3]
нельзя
3
Разбор
final запрещает переприсвоить переменную, но не менять объект, поэтому add работает. List.unmodifiable создаёт неизменяемую копию: add бросает UnsupportedError. Это копия, поэтому последующий add в исходный список её не меняет, длина остаётся 3.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.