Передача переменных MATLAB и ленивое присваивание

Я знаю, что в Matlab есть «ленивая» оценка, когда новая переменная присваивается существующей. Такие как:

array1 = ones(1,1e8);
array2 = array1;

Значениеarray1 не будет скопирован вarray2 если элементarray2 модифицируется.

Исходя из этого, я предположил, что все переменные в Matlab на самом деле являются типом-значением и все передаются по значениям (хотя используется ленивая оценка). Это также подразумевает, что переменные создаются в стеке вызовов.

Ну, я не оцениваю, как он обрабатывает переменные, хотя я никогда не видел, чтобы второй язык программирования делал так. Я имею в виду, что, возможно, для больших структур данных, таких как массивы, обработка этого значения как типа значения и передача его значениями не кажется хорошей идеей. Хотя ленивая оценка экономит пространство и время, мне это кажется странным. У вас может быть выражение для изменения (вместо инициализации или присвоения) переменной, приводящей к ошибке нехватки памяти. Насколько я знаю, в массивах C имена на самом деле являются указателями, а в Fortran массивы передаются по ссылке. Большинство современных языков используют массивы как тип ссылки.

Итак, может кто-нибудь сказать мне, почему Matlab использует такой не очень распространенный способ реализации массивов. Правда ли, что в Matlab ничего не может быть создано в куче?

Кстати, я спросил об этом некоторых опытных пользователей Matlab. Они просто говорят, что никогда не меняют переменную после ее создания, и используют вызов функции для создания новых переменных. Это означает, что все изменяемые данные считаются неизменяемыми. Есть ли какие-либо выгоды или потери для программирования таким образом?

Ответы на вопрос(1)

Ваш ответ на вопрос