- Scala编程(第5版)
- (德)马丁·奥德斯基等
- 721字
- 2022-05-06 15:51:48
第7章
内建的控制结构
Scala只有为数不多的几个内建的控制结构。这些控制结构包括if、while、for、try、match和函数调用。Scala的内建控制结构之所以这么少,是因为它从一开始就引入了函数字面量。不同于在基础语法中不断地添加高级控制结构的这种做法,Scala将内建的控制结构归口到类库中(第9章将会展示具体做法)。本章主要介绍的就是这些内建的控制结构。
你会注意到一点,那就是Scala所有的控制结构都返回某种值作为结果。这是函数式编程语言采取的策略,程序被认为是用来计算出某个值的,因此程序的各个组成部分也应该计算出某个值。你也可以将这种方式看作在指令式编程语言中已经存在的那种趋势的逻辑终局。在指令式编程语言中,函数调用可以返回某个值,即使被调用的函数在调用过程中更新了某个传入的输出变量,这套机制也是能正常运作的。除此之外,指令式编程语言通常都提供了三元操作符(如C、C++和Java的?:),其行为与if语句几乎没有差别,只是会返回某个值。Scala也采纳了这样的三元操作模型,不过把它称作if表达式。换句话说,Scala的if表达式可以有返回值。更进一步地,Scala让for、try和match也都有了返回值。
程序员可以用这些返回值来简化他们的代码,就像他们能用函数的返回值来简化他们的代码一样。缺少了这个机制,程序员必须创建临时变量,并且这些临时变量仅仅用来保持那些在控制结构内部计算出来的结果。去掉这些临时变量不仅让代码变得更简单,同时避免了很多由于在某个分支设置了变量而在另一个分支中忘记设置所带来的bug。
总体而言,Scala这些基础的控制结构虽然看上去很简洁,却提供了本质上与指令式编程语言相同的功能。不仅如此,这些控制结构通过确保每段代码都有返回值可以使你的代码变得更短。为了向你展示这一点,我们将对Scala的每一个控制结构进行详细的讲解。