小编Pri*_*kur的帖子

Julia:我们可以在不可变结构类型中更改对象多少?

我有一个不可变的结构,有四个对象定义如下:

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)))
Run Code Online (Sandbox Code Playgroud)

我正在修改FltFric.muS如下的值:

FltFriction.muS[1:20] = 100
Run Code Online (Sandbox Code Playgroud)

这很好用.但是当我尝试修改W的值时

FltFriction.W = (FltFriction.muS - FltFriction.muD)./(FltFriction.Dc)
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:type FltFric is immutable.

为什么第一个语句在第二个语句出错时没有给出错误?如果类型是不可变的,则两个语句都应该给出错误.这两项任务有什么区别?

我知道我可以通过打字来解决问题mutable struct,但我不明白我的两个任务的区别.

struct types julia

6
推荐指数
1
解决办法
857
查看次数

标签 统计

julia ×1

struct ×1

types ×1