更改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
当初始化整个代码>矢量< /代码>时,也总是要考虑广播(假设
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谢谢,注意!