为什么变量和数组元素在Julia中的继承方式不同?

时间:2019-06-20 14:26:17

标签: julia

我正在尝试了解Julia中的范围规则。我已经尝试将for作为常规整数变量进行z循环:

z = 2
for i = 1:4
    z += 1
end
println(z)

除非我将UndefVarError: z not defined放入循环内,否则它会给我一个global z错误。

但是,如果我将z设置为1x1数组,则在没有global的情况下可以正常工作:

z = [2]
for i = 1:4
    z .+= 1
end
println(z)
$ julia test.jl
  [6]

数组和变量的作用域有什么区别?

1 个答案:

答案 0 :(得分:1)

分配给全局变量的数组的内容在类型上是恒定的

julia> a = [1]
1-element Array{Int64,1}:
 1

julia> push!(a, "s")
ERROR: MethodError: Cannot `convert` an object of type String to an 
    object of type Int64

在循环中可以引用const类型的全局变量。