Джулия MethodError Массив Int64

Следующим препятствием я столкнулся с кодом, который пытаюсь отладить и проработать.

ERROR: LoadError: MethodError: no method matching Array(::Type{Int64}, ::Int64)
Closest candidates are:
  Array(::LinearAlgebra.UniformScaling, ::Integer, ::Integer) at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.1\LinearAlgebra\src\uniformscaling.jl:345

Я просмотрел предоставленный материал, и похоже, что определения массивов могли быть изменены на использование arr или Array{Int64,0} ... но они, похоже, тоже не сработали для меня. Любой совет? Заранее спасибо!

    # Puts the output of one lineup into a format that will be used later
    if status==:Optimal
        data_lineup_copy = Array(Int64, 0)
        for i=1:num_data
            if getValue(data_lineup[i]) >= 0.9 && getValue(data_lineup[i]) <= 1.1
                data_lineup_copy = vcat(data_lineup_copy, fill(1,1))
            else
                data_lineup_copy = vcat(data_lineup_copy, fill(0,1))
            end
        end
        for i=1:num_shot
            if getValue(shot_lineup[i]) >= 0.9 && getValue(shot_lineup[i]) <= 1.1
                data_lineup_copy = vcat(data_lineup_copy, fill(1,1))
            else
                data_lineup_copy = vcat(data_lineup_copy, fill(0,1))
            end
        end
        return(data_lineup_copy)
    end
end
    data1 = Array(Int64, 0)
    data2 = Array(Int64, 0)
    data3 = Array(Int64, 0)


person RedbirdFan23    schedule 06.06.2019    source источник


Ответы (1)


Array(Int64, 0) создаст пустой массив Int64 1D (т.е. Vector) в более старых версиях (вероятно, до эпохи 0.6).

Теперь, чтобы создать пустой массив Int64 1D, вы можете использовать любой из

data1 = Array{Int64, 1}(undef, 0) # where `1`, the second type parameter is for the dimension
data1 = Array{Int64}(undef, 0)
data1 = Vector{Int64}(undef, 0)
data1 = Vector{Int64}()
data1 = Int64[]

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

person hckr    schedule 06.06.2019
comment
Вы должны написать Vector{Int64}(undef, 0) или Vector{Int64}(). А, я вижу, обновилось :). - person Bogumił Kamiński; 06.06.2019
comment
@ BogumiłKamiński Да, это было быстро :). Добавлен Vector{Int64}(), так что ваш комментарий все еще был полезен! - person hckr; 06.06.2019