变量简介

  • Julia有丰富的变量类型,包括但不限于整数、浮点数、字符串、指针……
  • Julia是弱类型语言,允许同一变量前后类型不同
  • 暂时不支持delete之类的删除变量指令,如果需要减小空间,可以将大量占用空间的变量赋值为nothing
    也可以使用GC.gc()强行垃圾回收,此处不再赘述

以下示例请在REPL中运行

  1. julia> v=1 # 初始化、赋值
  2. 1
  3. julia> v # 调用
  4. 1
  5. julia> v+=1 # 改变值
  6. 2
  7. julia> v="var" # 改变类型
  8. "var"
  9. julia> 变量=1 # 变量名允许unicode
  10. 1
  11. julia> function foo()
  12. bar=0
  13. end # 函数实例其实也是变量
  14. foo (generic function with 1 method)
  15. julia> foo()
  16. 0
  17. julia> bar # 变量具有作用范围
  18. ERROR: UndefVarError: bar not defined
  19. julia> bar=9
  20. 9
  21. julia> foo()
  22. 0
  23. julia> bar # 确实具有作用范围
  24. 9

Julia 提供了灵活的变量命名策略

  • 变量名区分大小写
  • 可以使用 UTF-8 编码的 Unicode 字符作为变量名(允许大部分Unicode,包括大部分中文字符)
  • 变量名不允许使用关键字(见附录)
  • 在Julia REPL和一些其它的环境中,很多Unicode数学符号可以使用\LaTeX符号名再按 tab打出。
julia> α=1 # \alpha<tab>
1

help?> α̂₂ # 你从别的地方复制过来一个字符,不知道怎么打可以用help模式
"α̂₂" can be typed by \alpha<tab>\hat<tab>\_2<tab>
...

help?> Julia # help可以用来查阅各种东西
search: Julia julia

  Welcome to Julia 1.6.1. The full manual is available at

  ...

如果有需要,Julia 甚至允许你重定义内置常量和函数。(这样做可能引发潜在的混淆,所以并不推荐
然而,不允许重定义一个已经在使用中的内置常量或函数

julia> sqrt(4)
2.0

julia> sqrt=2
ERROR: cannot assign a value to variable Base.sqrt from module Main
Stacktrace:
 [1] top-level scope
   @ REPL[15]:1

命名规范

虽然 Julia 对合法名字的限制非常少,但仍应尽量遵循以下官方提供的命名规范

  • 若用英文,变量名应首字母小写
  • 用下划线分隔名字中的单词,但是不鼓励使用,除非不使用下划线时名字非常难读
  • 若用英文,类型和模块的名字应以大写字母开头,并且用大写字母而不是用下划线分隔单词。
  • 函数和宏的名字用小写,不使用下划线
  • 会对参数进行更改的函数要使用!结尾

变量作用域

  • global表示调用全局变量
  • local声明一个局部变量
  • 使用const声明常量