17-Unit类型和Nothing类型
Unit类型
对于那些只关心副作用而不关心值的表达式,它们的类型是 Unit
。例如,print
函数、赋值表达式、复合赋值表达式、自增和自减表达
式、循环表达式,它们的类型都是 Unit
。
Unit
类型只有一个值,也是它的字面量:()
。除了赋值、判等和判不等外,Unit
类型不支持其他操作。
比如:
javascript
let a = println("试试") // 输出 "试试"
println(a) // 输出 ()
比如:
javascript
var a = 10
var b = a++
println(b) // 输出 ()
比如:
javascript
var a = 10
var b = a++
println(b == ()) // 输出 true
Nothing类型
目前编译器还不允许在使用类型的地方显式地使用 Nothing 类型。
Nothing
是一种特殊的类型,它不包含任何值,并且 Nothing
类型是所有类型的子类型。
break
、continue
、return
和 throw
表达式的类型是 Nothing
,程序执行到这些表达式时,它们之后的代码将不会被执行。其中
break
、continue
只能在循环体中使用,return
只能在函数体中使用。
javascript
main() {
let a = terminateProgram() // 返回 Nothing 类型
}
func terminateProgram() {
throw NegativeArraySizeException("程序主动出错了")
}