我正在使用 Julia v0.7.0 升級為 Julia v0.5.0 撰寫的軟體包。我陷入了以下錯誤:
ERROR: LoadError: MethodError: no method matching Array(::Type{Int8}, ::Int64, ::Int64, ::Int64)
Closest candidates are:
Array(!Matched::LinearAlgebra.UniformScaling, ::Integer, ::Integer) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v0.7/LinearAlgebra/src/uniformscaling.jl:329
Array(::Any) where T<:AbstractArray at abstractarray.jl:22
Stacktrace:
[1] CellularAutomata.CA2d(::Array{Int64,1}, ::Array{Int64,1}, ::Array{Int64,2}, ::Int64, ::Int64, ::Int64) at /home/jafar_isbarov/.julia/dev/CellularAutomata/src/2dim.jl:22
[2] CellularAutomata.CA2d(::Array{Int64,1}, ::Array{Int64,1}, ::Array{Int64,2}, ::Int64) at /home/jafar_isbarov/.julia/dev/CellularAutomata/src/2dim.jl:21
[3] turbine_test() at /home/jafar_isbarov/Documents/projects/CellularAutomata.jl/test/conway_test.jl:57
[4] top-level scope at none:0
[5] include at ./boot.jl:317 [inlined]
[6] include_relative(::Module, ::String) at ./loading.jl:1038
[7] include(::Module, ::String) at ./sysimg.jl:29
[8] exec_options(::Base.JLOptions) at ./client.jl:239
[9] _start() at ./client.jl:432
in expression starting at /home/jafar_isbarov/Documents/projects/CellularAutomata.jl/test/runtests.jl:3
這是導致它的行:
cells = Array{Int8}(h, w, gen)
這是整個塊:
mutable struct CA2d
#User given values
k::Int #Number of states
r::Int #r-nearest neigbors
#Internal values
cells::Array{Int8, 3}
function CA2d(B::Array{Int,1},
S::Array{Int,1},
init::Array{Int,2},
gen::Int,
k::Int=2,
r::Int=1)
h, w = size(init)
cells = Array{Int8}(h, w, gen) #Syntax A(T, dims) is deprecated
cells[:, :, 1] = Array{Int8}(init[:, :])
for g = 2:gen
for i = 1:h, j = 1:w
cc = -cells[i, j, g-1]
for p = (i-r):(i r), q = (j-r):(j r)
#Cyclic boundary conditions
if p < 1; p = h-p; end
if p > h; p = p-h; end
if q < 1; q = w-q; end
if q > w; q = q-w; end
cc = cells[p, q, g-1]
end
cells[i, j, g] = eval_rule(cc, cells[i, j, g-1], B, S)
end #hw ij
end #gen
new(k, r, cells)
end
end
我已經檢查并知道h, w, 和gen確實是整數。
您可以在此處找到整個存盤庫。
編輯:
當我替換cells = Array{Int8}(h, w, gen)為 時cells = Array{Int8}(undef, h, w, gen),出現以下錯誤:
ERROR: LoadError: MethodError: no method matching Array(::Type{Int8}, ::Int64, ::Int64, ::Int64)
Closest candidates are:
Array(!Matched::LinearAlgebra.UniformScaling, ::Integer, ::Integer) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v0.7/LinearAlgebra/src/uniformscaling.jl:329
Array(::Any) where T<:AbstractArray at abstractarray.jl:22
Stacktrace:
[1] CellularAutomata.CA2d(::Array{Int64,1}, ::Array{Int64,1}, ::Array{Int64,2}, ::Int64, ::Int64, ::Int64) at /home/jafar_isbarov/.julia/dev/CellularAutomata/src/2dim.jl:22
[2] CellularAutomata.CA2d(::Array{Int64,1}, ::Array{Int64,1}, ::Array{Int64,2}, ::Int64) at /home/jafar_isbarov/.julia/dev/CellularAutomata/src/2dim.jl:21
[3] turbine_test() at /home/jafar_isbarov/Documents/projects/CellularAutomata.jl/test/conway_test.jl:57
[4] top-level scope at none:0
[5] include at ./boot.jl:317 [inlined]
[6] include_relative(::Module, ::String) at ./loading.jl:1038
[7] include(::Module, ::String) at ./sysimg.jl:29
[8] exec_options(::Base.JLOptions) at ./client.jl:239
[9] _start() at ./client.jl:432
in expression starting at /home/jafar_isbarov/Documents/projects/CellularAutomata.jl/test/runtests.jl:3
uj5u.com熱心網友回復:
制作一個未初始化的陣列eltype Int8:
Array{Int8}(undef, h, w, gen)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/390687.html
上一篇:從Javascript中的數字陣列回傳坐標(x,y)
下一篇:如何驗證所有匹配的括號
