变量简介
- Julia有丰富的变量类型,包括但不限于整数、浮点数、字符串、指针……
- Julia是弱类型语言,允许同一变量前后类型不同
- 暂时不支持
delete
之类的删除变量指令,如果需要减小空间,可以将大量占用空间的变量赋值为nothing
也可以使用GC.gc()
强行垃圾回收,此处不再赘述
以下示例请在REPL中运行
julia> v=1 # 初始化、赋值
1
julia> v # 调用
1
julia> v+=1 # 改变值
2
julia> v="var" # 改变类型
"var"
julia> 变量=1 # 变量名允许unicode
1
julia> function foo()
bar=0
end # 函数实例其实也是变量
foo (generic function with 1 method)
julia> foo()
0
julia> bar # 变量具有作用范围
ERROR: UndefVarError: bar not defined
julia> bar=9
9
julia> foo()
0
julia> bar # 确实具有作用范围
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
声明常量