未在Julia中定义的全局变量

用户名

以前曾在此处提出过类似的问题,但是根据该问题的答案和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);有人知道我在做什么错吗?

spencerlyon2

我认为您需要将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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章