
上QQ阅读APP看书,第一时间看更新
6.1.2 Nothing比void更深入
在Java等语言中,我们使用void表示方法不返回任何东西。但是在Kotlin中,使用Unit来告诉我们什么时候函数(也就是表达式)没有返回任何有用的东西。但是也有一些情况,一个函数实际上什么也没有返回,这就是Nothing类出现的地方。Nothing类没有实例,它表示一个永远不存在的值或结果。当用作方法的返回类型时,这意味着函数永远不会返回——函数调用只会导致异常。
Nothing的一个独特能力是它可以代表任何东西——也就是说,Nothing可以替代任何类,包括Int、Double、String等。例如,看看下面的代码:

if部分返回一个Double,而else部分抛出一个异常。异常部分由类型Nothing表示。总的来说,编译器可以确定if表达式的返回类型,在本例中为Double类型。因此,Nothing的唯一目的是能够帮助编译器验证程序中类型的完整性是健全的。