过程
Scala对于不返回值的函数有特殊的表示方法。如果函数体包含在花括号当中但没有前面的=号,那么返回类型就是Unit。这样的函数被称作过程。
过程不返回值,我们调用它仅仅是为了它的副作用,举个栗子:
当然同样可以这样定义:
懒值
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表达式的类型就是另一个分支的类型。
举个栗子:
4、捕获异常的语法采用的是模式匹配的语法(后续说明),和Java和C++一样,更通用的异常应该排在更具体的异常后面