создание и присвоение значений массиву структур в Julia

Если вы хотите получить элемент, выбранный из списка, вот код ...

String SelectedItem = listBox1.SelectedItem.Value;
2
задан Charlie Crown 17 January 2019 в 09:09
поделиться

1 ответ

N в Array{T,N} определяет размерность массива, то есть N -мерный массив типа T.

Вы не определяете массив размера 3 для хранения координат x, y, z в своем определении struct, вместо этого вы определяете 3D-массив, который не соответствует вашей цели . [1 125]

Еще раз, вы просто объявляете тип arrayOfStructs как 10-мерный массив без конструирования его. Вы должны правильно определить и построить свой массив перед его использованием.

Типы Array в Julia не имеют статической информации о размере. Array - это динамическая структура, которая не подходит для вашего случая. Для типов массивов со статической информацией о размере вы можете взглянуть на StaticArrays.jl .

Вот как я бы поступил с вашей проблемой.

mutable struct Coords
    x::Float64
    y::Float64
    z::Float64
end

x = 10 # I want the array to be of length 10
# create an uninitialized 1D array of size `x`
arrayOfStructs = Array{Coords, 1}(undef, x) # or `Vector{Coords}(undef, x)`

# initialize the array elements using default constructor
# `Coords(x, y, z)`
for i = 1:x
    arrayOfStructs[i] = Coords(rand(), rand(), rand())
    # or you can use splatting if you already have values
    # arrayOfStructs[i] = Coords(rand(3)...)
end

Вместо этого вы можете создать пустой внешний конструктор для вашего типа, который случайным образом инициализирует поля.

# outer constructor that randomly initializes fields
Coords() = Coords(rand(), rand(), rand())

# initialize the array elements using new constructor
for i = 1:x
    arrayOfStructs[i] = Coords()
end

Вы также можете использовать понимание, чтобы легко построить свой массив.

arrayOfStructs = [Coords() for i in 1:x]

Если вы все еще хотите использовать Array для своего поля, вы можете определить r как одномерный массив и обработать конструкцию r в своих конструкторах.

Возможно, вы захотите взглянуть на соответствующие разделы документации по Array и Composite Types:

https://docs.julialang.org/en/v1/ manual / arrays /

https://docs.julialang.org/en/v1/manual/types/#Composite-Types-1

0
ответ дан hckr 17 January 2019 в 09:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: