Когда вы пишете let m1 = m0
, имена m1
и m0
обозначают один и тот же объект.Это не присвоение, это привязка значения к имени.Поскольку выражение после знака =
является простым именем, оба имени m1
и m0
имеют одно и то же значение, связанное с ними.
Если вы хотите сделать копию изменяемой структуры данных,вы должны явно запросить эту копию.
Если вы хотите иметь возможность передавать данные без необходимости их изменения, эти данные должны быть неизменными.Это, действительно, является ключевой причиной для использования неизменных данных.Когда вы используете изменяемые данные, вам необходимо тщательно обдумать совместное использование между структурами данных и тем, кто отвечает за копирование при необходимости.
Хотя вы можете реорганизовать любую структуру данных, чтобы она была неизменной, плотные матрицы не являются примером, в котором неизменяемостьсияет, потому что неизменяемые представления плотных матриц, как правило, требуют гораздо больше памяти и больше времени обработки.