我正在尝试了解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]
数组和变量的作用域有什么区别?
答案 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类型的全局变量。