Scala菜鸟的进阶之路之控制结构和函数(五)

过程

 Scala对于不返回值的函数有特殊的表示方法。如果函数体包含在花括号当中但没有前面的=号,那么返回类型就是Unit。这样的函数被称作过程。 

      过程不返回值,我们调用它仅仅是为了它的副作用,举个栗子:


Scala菜鸟的进阶之路之控制结构和函数(五)_第1张图片

当然同样可以这样定义:


Scala菜鸟的进阶之路之控制结构和函数(五)_第2张图片

懒值

1、当val被声明为lazy时,它的初始化将被推迟,直到我们首次对它取值。

2、懒值对于开销比较大的初始化语句而言十分有用。

3、懒值并不是没有开销。我们每次访问懒值,都会有一个方法被调用,而这个方法将会以线程安全的方式检查该值是否已被初始化

异常

1、Scala异常的工作机制和java或C++一样。当你抛出异常时,比如

   throw new IllegalArgumentException("x should not be  negative")

当前的运算被中止,运行时系统查找可以接受IllegalArgumentException的异常处理器,控制权将在离抛出点最近的处理器中恢复。如果没有找到符合要求的异常处理器,则程序退出。

2、Scala和Java一样,抛出的对象必须是java.lang.Throwable的子类。不过,与Java不同的是,Scala没有"受检"异常,你不需要声明说函数或方法可能会抛出某种异常。

3、throw表达式有特殊的类型Nothing。这在if/else

表达式中很有用,如果一个分支的类型是Nothing,那么if/else表达式的类型就是另一个分支的类型。

举个栗子:


第一个分支是Double类型,第二个分支是Nothing,因此该if/else表达式的类型是DOUBLE

4、捕获异常的语法采用的是模式匹配的语法(后续说明),和Java和C++一样,更通用的异常应该排在更具体的异常后面

你可能感兴趣的:(Scala菜鸟的进阶之路之控制结构和函数(五))