为什么以下数组初始化在Julia 1.0中不起作用

问题描述 投票:0回答:1

我试图绘制一堆复杂的轮廓并尝试以下方法:

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

其中itersbx是一维数组。这让我有以下错误:

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类型的参数,但它究竟是什么?

arrays size julia variable-declaration
1个回答
3
投票

你把它拼成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
© www.soinside.com 2019 - 2024. All rights reserved.