Почему следующая инициализация массива не работает в Julia 1.0 - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь построить несколько сложных контуров и попытался сделать следующее:

ax_matrix = Array{Union{Int,Float64},2}(length(iters),length(bx));

, где iters и bx - одномерные массивы. Это дает мне следующую ошибку:

LoadError: MethodError: no method matching Array{Union{Float64,Int64},2}(::Int64,::Int64)
Closest candidates are:
  Array{Union{Float64, Int64},2}(::UndefInitializer, ::Int64, ::Int64) where T at boot.jl:396
  Array{Union{Float64, Int64},2}(::UndefInitializer, ::Int64...) where {T, N} at boot.jl:400
  Array{Union{Float64, Int64},2}(::UndefInitializer, ::Integer, ::Integer) where T at sysimg.jl:143

Похоже, я пропускаю и параметр ::UndefInitializer -типа, но что именно?

1 Ответ

0 голосов
/ 11 сентября 2018

Вы пишете это как undef как это:

julia> Array{Union{Int,Float64},2}(undef, 5, 5)
5×5 Array{Union{Float64, Int64},2}:
 0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0

Вы также можете написать (но это многословно, поэтому была введена первая опция):

julia> Array{Union{Int,Float64},2}(UndefInitializer(), 5, 5)
5×5 Array{Union{Float64, Int64},2}:
 0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0
...