贡献者: 待更新
本文授权转载自郝林的 《Julia 编程基础》。原文链接:第 11 章 流程控制。
还记得吗?我在第一章的最开始就已经在使用英文分号 ;
来分隔多个并列的表达式了。例如:
julia> a = 5 * 8; b = a^2
1600
julia>
这时,Julia 会(从左到右)逐个地对这些表达式进行求值,并把最后一个表达式的结果值作为最终的求值结果。
这与我们让每一个表达式都独占一行好像并没有什么区别。但是,像上面这样的并列的表达式却可以被称为代码块。你可能会说,“它不应该是一个代码块,因为它没有明显的边界”。实际上,这样的并列表达式是有边界的,只不过它的边界可以被省略不写罢了。它的边界是一对圆括号。
并列表达式可以被作为一个整体出现在赋值符号 =
的右边,例如:
julia> c1 = (a = 5 * 8; b = a^2)
1600
julia> c1
1600
julia>
这就相当于我们把这个并列表达式的最终结果值赋给了变量 c1
。注意,这里的圆括号就不能被省略了,否则会引起歧义。
另外,我们还可以使用关键字 begin
和 end
对并列表达式进行包装,以形成边界更加清晰的代码块。示例如下:
julia> begin a = 5 * 8; b = a^2 end
1600
julia> c2 = begin a = 5 * 8; b = a^2 end
1600
julia> c2
1600
julia>
这样的代码块也被称为 begin
代码块。在这里,begin
代码块的优势在于,当并列表达式中的子表达式过多时,它可以被分成多行来编写,而其边界会依然清晰。如:
julia> c2 = begin
a = 5 * 8
b = a^2
end
1600
julia>
虽然我们也可以让由圆括号包裹的并列表达式占据多行,但是这样的代码看起来就要简陋很多了:
julia> c2 = (a = 5 * 8;
b = a^2)
1600
julia>
最后,无论是纯粹的并列表达式,还是 begin
代码块,我们都可以称之为复合表达式(compound expression)。它们的主体都只是多个子表达式的排列而已,并没有额外的处理逻辑在里面。这正是我说它们是最简单的主要原因。