Я не понимаю такого поведения Юлии. Каким-то образом массивы xit и mut соединены между собой и имеют общие значения в следующем MWE ниже:
sample_size = 100;
mc_reps = 100;
ka = .01;
threshold=1;
mut = Array{Float64}(undef,mc_reps,sample_size);
xit = mut;
mut[:,1] = ones(mc_reps);
function regime_prob(ka,ce,muu)
h = 1/(1+ exp(ka*(ce-muu)))
return h
end
xit[1,1] = regime_prob(ka,threshold,mut[1,1]);
xit[:,1] = regime_prob.(ka,threshold,mut[:,1]);
Я попробовал объявить встроенную функцию следующим образом: regime_prob(ka,ce,muu) = 1/(1+ exp(ka*(ce-muu)));
что не имело никакого значения. Есть ли какая-то тонкая идиома, к которой я невольно прибегаю?
Я ожидал, что массив mut сохранит в своих столбцах единицы, но каким-то образом в него продолжает записываться значение xit.
Может быть, hit = copy(mut) будет полезен?
Восклицательный знак в именах функций не является синтаксическим, это просто соглашение.
@DanGetz прав - см. этот вопрос для получения дополнительной информации.
Вам также стоит посмотреть вот это: stackoverflow.com/questions/58150295/… Предлагаю пометить ваш вопрос как дубликат

Если вопрос не закрывается как дубликат, правильные ответы скрываются в комментариях к вашему вопросу:
xit = mut означает, что xit теперь является просто другим именем, относящимся к тому же объекту, что и mut:julia> x = rand(5); y = x;
julia> x === y
true
Если вы хотите скопировать, используйте copy(mut)
Суффикс ! к имени функции в Julia — это всего лишь синтаксическое соглашение: вы можете написать myfunction(x), который изменяет x, так же, как и myfunction!(x), который этого не делает, но оба варианта не рекомендуются, поскольку они могут сбить с толку читателя.
Думаю, я понял это. Будучи ленивым, я думаю, что виновата строка hit = mut. Я думал, что это будет перезаписано?