Julia 基本语法
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。
变量可以通过变量名访问。
Julia 变量使用很简单,只需赋值即可,不需要提前声明类型:
实例
julia> x = 10
10
# 使用 x 的值做计算
julia> x + 1
11
# 将字符串赋值给变量 site_name
julia> site_name = "RUNOOB"
"RUNOOB"
# 浮点型数据
julia> marks_math = 9.5
9.5
从实例中我们看到,与其他编程语言 C++、Java 等不同的是 Julia 不需要指定变量类型,它可以自动推断等号右侧的对象类型。
注意:本页示例均为 REPL 中的交互式输入,julia> 开头的行是用户输入,下面的行是 REPL 打印的结果。如果把代码写到 .jl 文件中用 julia 命令执行,普通表达式不会自动打印结果,需要使用 println() 等函数输出。
变量命名规则
Julia 变量名大小写敏感,命名规则如下:
- 变量名必须以字母(A-Z、a-z)、下划线 _ 或部分 Unicode 字符开头,首字符不能是数字。
- 后续字符可以包含字母、数字、下划线、感叹号 ! 等。
- 变量名区分大小写,Runoob 和 runoob 是两个不同的变量。
- Julia 变量名甚至可以使用 Unicode 字符,比如中文或希腊字母:
实例
julia> δ = 0.00001
1.0e-5
# 中文也可以作为变量名
julia> 课程 = "Julia 教程"
"Julia 教程"
在 REPL 和多数编辑器中,可以先输入 LaTeX 命令再按 Tab 键来输入这些符号,例如 \delta + Tab 得到 δ。
不能使用的名称
Julia 的保留关键字不能作为变量名,例如 else、try、function、end 等:
实例
ERROR: ParseError:
# Error @ none:1:1
else = false
└──┘ ── invalid identifier
赋值表达式
赋值 x = value 本身也是一个表达式,它的值就是右侧的 value,因此赋值可以被链式使用或嵌在其他表达式中:
实例
julia> a = (b = 2 + 2) + 3
7
julia> a
7
julia> b
4
赋值与修改的区别
这是 Julia 初学者最容易混淆的概念之一:赋值(assignment)是给值起一个新名字,而修改(mutation)是改变对象本身的内容。
对整数等不可变类型,a = 2; a = 3 只是把名字 a 指向了新值 3,数字 2 本身没有任何变化。
对数组这样的可变类型,区别就会显现出来:
实例
3-element Vector{Int64}:
1
2
3
julia> b = a # b = a 不会复制数组,b 和 a 指向同一个数组!
julia> a[1] = 42 # 修改第一个元素
42
julia> b # 通过 b 也能看到修改
3-element Vector{Int64}:
42
2
3
如果想得到一个独立的副本,需要使用 copy() 函数;递归复制所有嵌套元素则用 deepcopy()。
命名规范
Julia 对命名没有强制要求,但社区约定俗成以下规范:
| 对象 | 规范 | 示例 |
|---|---|---|
| 变量 | 小写,单词分隔可用下划线(不鼓励滥用) | runoob_count |
| 类型 Type | 大驼峰式(UpperCamelCase) | Int64、Vector |
| 模块 Module | 大驼峰式 | SparseArrays |
| 函数、宏 | 小写,不使用下划线 | isempty、startswith |
| 修改参数的函数 | 以 ! 结尾 | push!、sort! |
以感叹号 ! 结尾的函数叫做"修改(mutating)"或"原位(in-place)"函数,它们会修改输入参数的内容而不只是返回一个新值,例如 sort(v) 返回排序后的新数组,而 sort!(v) 直接原地修改数组 v。
注释
Julia 中的注释有单行注释和多行注释。
Julia 中单行注释以 # 开头,例如:
实例
# 这是另外一行注释
println("Hello World!")
多行注释用 #= 与 =# 将注释括起来,多行注释可以嵌套:
实例
1、这是一行注释
2、这是另外一行注释
=#
println("Hello World!")
注意:与 C 语言不同,Julia 没有斜杠星号形式的块注释
/* ... */,多行注释必须使用#= ... =#。
