以前曾在此处提出过类似的问题,但是根据该问题的答案和Julia手册,以下.jl脚本应该可以使用。
global myVar = spzeros(10,1);
myVar[3] = 1;
function test_base()
test1();
end
function test1()
myVar = [ i > 0 ? 2 : 0 for i in myVar] #doesn't work
end
我明确声明了全局变量,然后尝试在函数内部对其进行修改。但是,当我尝试运行函数test1()时,它说该变量未定义。
julia> VERSION
v"0.3.5"
julia> include("test.jl")
test1 (generic function with 1 method)
julia> test_base()
ERROR: myVar not defined
in test1 at /home/clifton/Julia/ca-1/test.jl:9
in test_base at /home/clifton/Julia/ca-1/test.jl:5
我尝试了不同的方法,并且只要我在test1()中访问变量,它就可以工作,就像print(myVar);
有人知道我在做什么错吗?
我认为您需要将global
需要访问全局变量的函数放入其中。
以下对我有用:
myVar = spzeros(10,1);
myVar[3] = 1;
function test_base()
test1();
end
function test1()
global myVar
myVar = [ i > 0 ? 2 : 0 for i in myVar] #doesn't work
end
输出:
julia> include("test.jl")
test1 (generic function with 1 method)
julia> test_base()
10-element Array{Int64,1}:
0
0
2
0
0
0
0
0
0
0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句