Jeżeli weźmiemy pod uwagę następujący fragment jako przykład:Jakie są sposoby unikania mutacji obiektu w Dart-lang?
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;
}
Oryginalna tablica zostanie zmutowany. Spodziewałem się tego, przekazując tablicę (obiekt) do funkcji zmiany i przypisując jej nową zmienną, żebym mógł uniknąć mutacji. Jestem świadomy, że built_collection library wydaje się być głównym krokiem do niezmiennych kolekcji. Czy istnieje rdzenna biblioteka rdzeniowa pozwalająca na głębokie zamrożenie lub zapobieganie efektom ubocznym (operacje wewnątrz innej funkcji)?
Dzięki za cynk. Chociaż to podejście podniosłoby wyjątek, gdy 'UnmodifiableListView' został przekazany (i próbował zostać zmieniony) w innej funkcji. –
Czego oczekujesz, gdy zmodyfikujesz niezmodyfikowaną tablicę? –