变量作用域

变量的作用域是代码的一个区域,在这个区域中这个变量是可访问的。给变量划分作用域有助于解决变量命名冲突。因为很有可能两个函数同时有名为 x 的、本质不同的变量。

在 Julia 中主要有两种作用域:全局作用域局部作用域,后者可以嵌套。在 Julia 中还存在引入“硬作用域”的构造和只引入“软作用域”的构造之间的区别,这影响到是否允许以相同的名称遮蔽全局变量。

julia> x = 1
1

julia> if true
           local x = 0
       end
0

julia> x
1

作用域结构

引入作用域块的结构有:

结构作用域类型允许使用在
modulebaremodule全局全局
struct局部(软)全局
forwhiletry局部(软)全局和局部
macro局部(硬)全局
函数,do 语句块,let 语句块,数组推导和生成器局部(硬)全局和局部

此外,beginif不会引进新的作用域块。

参阅

Julia 中具体的变量作用域规则较为复杂,可参阅变量作用域