第 11 章 流程控制
从本章开始,我们就要讲怎样把 Julia 代码组织为真正的程序了。经过良好组织的代码可以在不同的具体情况下执行不同的分支或流程、应对各种异常情况以保持足够的稳定,以及形成通用的函数、模块、程序包等以便自己重复使用甚至供他人使用,等等。
我们在前面编写的大部分程序都只能算是脚本程序。我们之前给出过脚本程序的简单定义,即:以普通文本的形式保存的、实现了一定的处理逻辑的计算机指令片段。这样的指令片段往往会被保存在一个或少数几个文件之中,并可以通过配套的工具(如bash
、python
、julia
等)来启动和执行。与真正的程序相比,脚本程序的最大特点就是简单。它们通常是由人们为了做演示或者执行简易的任务而编写出来的。
其实,我们在前面已经接触过了一些可以控制流程的代码。例如,我们多次定义过函数以及相应的衍生方法、使用过可以进行短路条件求值的操作符&&
、编写过可实现循环的for
语句和可实现条件判断的if
语句等。
简单地回顾一下,我们在上一个部分的开头讲过,所谓的代码块指的就是有着明显边界的代码片段。一些代码块会拥有自己的名称(或者说可指代它的标识符),如函数、模块等。我们称之为有名的代码块。与之相对应的是无名代码块。另外,Julia 中的很多代码块都会自成一个作用域,如for
语句、函数等。一旦我们学会了编写各种各样的代码块,就可以有能力写出实现较复杂功能、拥有一定规模的真正的程序了。
这里再说一下无名代码块,即:没有名称的代码块。像for
语句和if
语句就都属于无名代码块,只不过它们都不是最简单的那一种。请记住,虽然我们可以把无名代码块直接写在 REPL 环境或者源码文件中(就像之前那样),但是为了有效的组织和再次的使用,我们往往会在正式编写程序的时候把它们写在函数里。当然了,为了方便演示,我在后面依然会尽量利用 REPL 环境来编写和执行这些代码块。
下面,我们就从最简单、最直接的无名代码块讲起。