变量¶
Julia 中,变量即是关联到某个值的名字。当你想存储一个值(比如数学计算中的某个中间变量)以备后用时,变量的作用就体现出来了。举个例子:
# 将 整数 10 赋值给变量 x
julia> x = 10
10
# 对 x 所存储的值做数值运算
julia> x + 1
11
# 重新定义 x 的值
julia> x = 1 + 1
2
# 你也可以给它赋予其它类型的值, 比如字符串
julia> x = "Hello World!"
"Hello World!"
Julia 提供了极其灵活的变量命名系统。变量名区分大小写。
julia> x = 1.0
1.0
julia> y = -3
-3
julia> Z = "My string"
"My string"
julia> customary_phrase = "Hello world!"
"Hello world!"
julia> UniversalDeclarationOfHumanRightsStart = "人人生而自由,在尊严和权力上一律平等。"
"人人生而自由,在尊严和权力上一律平等。"
也可以使用 Unicode 字符(UTF-8 编码)来命名:
julia> δ = 0.00001
1.0e-5
julia> 안녕하세요 = "Hello"
"Hello"
在 Julia REPL 和其它一些 Julia 的编辑环境中,支持 Unicode 数学符号
的输入。只需要键入对应的 LaTeX 语句,再按 tab 键即可完成输入。
比如,变量名 δ
可以通过 \delta
-tab 来输入,又如 α̂₂``可以由
``\alpha
-tab-\hat
-tab-\_2
-tab 来完成。
Julia 甚至允许重新定义内置的常数和函数:
julia> pi
π = 3.1415926535897...
julia> pi = 3
Warning: imported binding for pi overwritten in module Main
3
julia> pi
3
julia> sqrt(100)
10.0
julia> sqrt = 4
Warning: imported binding for sqrt overwritten in module Main
4
很显然, 不鼓励这样的做法。
可用的变量名¶
变量名必须的开头必须是如下字符:
- 字母
- 比 00A0大的unicode 子集 具体是指, Unicode character categories:
- Lu/Ll/Lt/Lm/Lo/Nl(字母))开头
- Sc/So(货币和其它符号)
- 以及其它一些类似于字母的符号(比如 Sm 数学符号)
在变量名中的字符还可以包含 ! 和数字, 同时也可以是 Unicode 编码点: 变音符号 以及 其它 修饰符号, 一些标点连接符, 元素, 以及一些其它的字符.
类似于 +
的运算符也是允许的标识符, 但会以其它方式解析. 在上下文中, 运算符会被类似于变量一样使用; 比如 (+)
代表了加法函数, 而 (+) = f
会重新给它赋值. 大部分的 Unicode 运算符,比如 ⊕
, 会被当做运算符解析, 并且可以由用户来定义. 比如, 您可以使用 const ⊗ = kron
来定义 ⊗
为一个直乘运算符.
内置的关键字不能当变量名:
julia> else = false
ERROR: syntax: unexpected "else"
julia> try = "No"
ERROR: syntax: unexpected "="
命名规范¶
尽管 Julia 对命名本身只有很少的限制, 但尽量遵循一定的命名规范吧:
- 变量名使用小写字母
- 单词间使用下划线 (
'_'
) 分隔,但不鼓励 - 类型名首字母大写, 单词间使用驼峰式分隔.
- 函数名和宏名使用小写字母, 不使用下划线分隔单词.
- 修改参数的函数结尾使用
!
. 这样的函数被称为 mutating functions 或 in-place functions