更改Julia中结构字段值的数组

更改Julia中结构字段值的数组,julia,Julia,假设我想定义以下对象 mutable struct Coord x::Float y::Float end 并创建一个坐标向量 coordVec = Vector{Coord}(undef, 3) 通过使用for循环,我们可以在coordVec中定义坐标值,但是如何分配坐标的新值呢?我试着按照这种方法做,但不起作用 coordVec[1].x = 3.1 (p->p.x).(coordVec)[1] = 3.1 问题是您的数组coordVec未初始化,因为您使用undef构造数组,这

假设我想定义以下对象

mutable struct Coord
x::Float
y::Float
end
并创建一个坐标向量

coordVec = Vector{Coord}(undef, 3)
通过使用for循环,我们可以在
coordVec
中定义坐标值,但是如何分配坐标的新值呢?我试着按照这种方法做,但不起作用

coordVec[1].x = 3.1
(p->p.x).(coordVec)[1] = 3.1

问题是您的数组
coordVec
未初始化,因为您使用
undef
构造数组,这意味着其值未定义:

julia> coordVec = Vector{Coord}(undef, 3)
3-element Array{Coord,1}:
 #undef
 #undef
 #undef
因此无法更新字段。如果将
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

当初始化整个代码>矢量< /代码>时,也总是要考虑广播(假设 COORD 有<代码> FLUAT64 字段:

julia> Coord.([1.,2.,3.], 4:6)
3-element Array{Coord,1}:
 Coord(1.0, 4.0)
 Coord(2.0, 5.0)
 Coord(3.0, 6.0)

请注意,
Float
不是标准类型。您可能希望使用
Float64
Float32
@FrançoisFévotte谢谢,注意!