У меня есть неизменная структура с четырьмя объектами, определенными следующим образом:
struct FltFric
muS::Array{Float64, 2}
muD::Array{Float64, 2}
Dc::Float64
W::Array{Float64, 2}
end
muS = repmat([0.6], 100, 1) # Coefficient of static friction
muD = repmat([0.5], 100, 1) # Coefficient of dynamic friction
Dc = 0.1 # Critical slip distance
FltFriction = FltFric(muS, muD, Dc, zeros(size(muS)))
Я изменяю значения FltFric.muS
следующим образом:
FltFriction.muS[1:20] = 100
Это отлично работает. Но когда я пытаюсь изменить значение W
FltFriction.W = (FltFriction.muS - FltFriction.muD)./(FltFriction.Dc)
Это дает мне ошибку: type FltFric is immutable
.
Почему первое утверждение не дает ошибки, а второе -? Если тип неизменяем, оба оператора должны выдавать ошибку. В чем разница между двумя заданиями?
Я знаю, что могу обойти проблему, набрав mutable struct
, но я не понимаю разницы в моих двух заданиях.