假设我想定义以下对象
mutable struct Coord
x::Float
y::Float
end
Run Code Online (Sandbox Code Playgroud)
并创建一个坐标向量
coordVec = Vector{Coord}(undef, 3)
Run Code Online (Sandbox Code Playgroud)
通过使用 for 循环,我们可以在 中定义坐标的值coordVec,但是如何分配一个新的坐标值呢?我尝试以下方式但不起作用
coordVec[1].x = 3.1
(p->p.x).(coordVec)[1] = 3.1
Run Code Online (Sandbox Code Playgroud)
问题是您的数组coordVec未初始化,因为您使用undef来构造数组,这意味着它的值是未定义的:
julia> coordVec = Vector{Coord}(undef, 3)
3-element Array{Coord,1}:
#undef
#undef
#undef
Run Code Online (Sandbox Code Playgroud)
因此您无法更新字段。如果将Coord对象放入数组中,则可以按预期更新它们:
julia> coordVec[2] = Coord(1, 2)
Coord(1.0, 2.0)
julia> coordVec[2].x = 3.0
3.0
julia> coordVec
3-element Array{Coord,1}:
#undef
Coord(3.0, 2.0)
#undef
Run Code Online (Sandbox Code Playgroud)