Если мы возьмем следующий фрагмент кода в качестве примера:Каковы способы избежать мутации объекта в Дарт-ланге?
main() {
List<int> array = [1, 2, 3, 4];
List<int> newArray = change(array);
print(array); // [99, 2, 3, 4]
print(newArray); // [99, 2, 3, 4]
print(newArray == array); // true
}
change(List<int> array) {
var newArray = array;
newArray[0] = 99;
return newArray;
}
Исходный массив получает мутировал. Я ожидал, что, передав массив (объект) функции изменения и присвоив ей новую переменную, я мог бы избежать мутации. Я знаю, что built_collection library походит на главную коллекцию неизменных коллекций. Есть ли какой-либо родной путь к основной библиотеке, которая позволит глубоко замерзать или предотвращать побочные эффекты (операции внутри другой функции)?
Спасибо за подсказку. Хотя этот подход может вызвать исключение, когда «UnmodifiableListView» передается (и пытается получить изменение) в другой функции. –
Что вы ожидаете, когда будете модифицировать неизменяемый массив? –