现在位置: 首页 > Julia 教程 > 正文

Julia 基本语法

变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。

变量可以通过变量名访问。

Julia 变量使用很简单,只需赋值即可,不需要提前声明类型:

实例

# 将 10 赋值给变量 x
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 等:

实例

julia> else = false
ERROR: ParseError:
# Error @ none:1:1
else = false
└──┘ ── invalid identifier

赋值表达式

赋值 x = value 本身也是一个表达式,它的值就是右侧的 value,因此赋值可以被链式使用或嵌在其他表达式中:

实例

# b = 2 + 2 的值是 4,整个表达式再把 4 加上 3 赋给 a
julia> a = (b = 2 + 2) + 3
7

julia> a
7

julia> b
4

赋值与修改的区别

这是 Julia 初学者最容易混淆的概念之一:赋值(assignment)是给值起一个新名字,而修改(mutation)是改变对象本身的内容。

Julia 赋值与修改的区别示意图

对整数等不可变类型,a = 2; a = 3 只是把名字 a 指向了新值 3,数字 2 本身没有任何变化。

对数组这样的可变类型,区别就会显现出来:

实例

julia> a = [1, 2, 3]    # 创建数组
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 没有斜杠星号形式的块注释 /* ... */,多行注释必须使用 #= ... =#。