跳到主要内容

Julia 作用域

阐述

作用域是查找变量所对应的值的范围。在 Julia 中作用域分为两种:

全局作用域

每个模块都引入了一个全局作用域,与其他模块的作用域分离,并且可以通过 Julia 模块的导入功能来导入其他模块中的变量,但不能修改。

在全局作用域中的一段表达式中可以用 local x = ... 语法定义变量,这样它不会影响全局作用域。

局部作用域

很多语法结构都进一步引入了局部作用域,局部作用域继承所在的全局作用域和其他局部作用域中的变量。但是,当对变量赋值时,局部作用域会创建新的变量,除非以下三个条件均满足:

  • 赋值所在的作用域以及所有的父作用域均为软局部作用域
  • 处于 REPL 中
  • 全局变量已定义

这种情况下会对全局变量修改。

Julia 的作用域是词法作用域

在 Julia 中作用域为词法作用域,即函数的作用域不继承调用者的作用域,而是函数定义的作用域。

实例

结构作用域类型允许出现在
Julia 模块全局全局
Julia 复合类型软局部全局
Julia 循环Julia 异常处理软局部全局或局部
Julia 宏硬局部全局
Julia 函数Julia do 块Julia let 块Julia 推导式Julia 生成器硬局部全局或局部

具体的用法参考这些结构中的作用域说明。

性质

相关内容

参考文献