变量作用域
变量的作用域是代码的一个区域,在这个区域中这个变量是可访问的。给变量划分作用域有助于解决变量命名冲突。因为很有可能两个函数同时有名为 x
的、本质不同的变量。
在 Julia 中主要有两种作用域:全局作用域与局部作用域,后者可以嵌套。在 Julia 中还存在引入“硬作用域”的构造和只引入“软作用域”的构造之间的区别,这影响到是否允许以相同的名称遮蔽全局变量。
julia> x = 1
1
julia> if true
local x = 0
end
0
julia> x
1
作用域结构
引入作用域块的结构有:
结构 | 作用域类型 | 允许使用在 |
---|---|---|
module 与 baremodule | 全局 | 全局 |
struct | 局部(软) | 全局 |
for 与 while 及 try | 局部(软) | 全局和局部 |
macro | 局部(硬) | 全局 |
函数,do 语句块,let 语句块,数组推导和生成器 | 局部(硬) | 全局和局部 |
此外,begin
和 if
块不会引进新的作用域块。
参阅
Julia 中具体的变量作用域规则较为复杂,可参阅变量作用域。