我在文件global.jl中有一个模块,它定义了一个名为"data"的全局多维数组:
module Global
export data
# GLOBAL DATA ARRAY
data = zeros(Int32, 20, 12, 31, 24, 60, 5);
end
我有一个使用此全局变量的main.jl:
include("global.jl")
using .Global
println(data[14,1,15,18,0,1])
我收到以下错误:
$ time /usr/local/julia-1.2.0/bin/julia main.jl
ERROR: LoadError: BoundsError: attempt to access 20Ã12Ã31Ã24Ã60Ã5 Array{Int32,6} at index [14, 1, 15, 18, 0, 1]
Stacktrace:
[1] getindex(::Array{Int32,6}, ::Int64, ::Int64, ::Int64, ::Int64, ::Vararg{Int64,N} where N) at ./array.jl:729
[2] top-level scope at /usr/home/user/test1/main.jl:4
[3] include at ./boot.jl:328 [inlined]
[4] include_relative(::Module, ::String) at ./loading.jl:1094
[5] include(::Module, ::String) at ./Base.jl:31
[6] exec_options(::Base.JLOptions) at ./client.jl:295
[7] _start() at ./client.jl:464
in expression starting at /usr/home/user/test1/main.jl:4
我想我错过了如何在 Julia 的单独文件中共享全局变量。欢迎任何帮助。
全局很好 - 你有一个零索引,默认情况下,Julia 数组索引以 1 开头,而不是零:
module Global
export data
# GLOBAL DATA ARRAY
data = zeros(Int32, 20, 12, 31, 24, 60, 5);
end
using .Global
function printplus42()
println((data .+ 42)[1, 1, 1, 1, 1, :])
end
printplus42()
println(data[14,1,15,18,0,1])
收益 率:
[42, 42, 42, 42, 42]
ERROR:[...]attempt to access 20×12×31×24×60×5 Array{Int32,6} at index [14, 1, 15, 18, 0, 1]