Skip to content

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 类型是所有类型的子类型。

breakcontinuereturnthrow 表达式的类型是 Nothing,程序执行到这些表达式时,它们之后的代码将不会被执行。其中

breakcontinue 只能在循环体中使用,return 只能在函数体中使用。

javascript
main() {
   let a = terminateProgram() // 返回 Nothing 类型
}

func terminateProgram() {
    throw NegativeArraySizeException("程序主动出错了")
}

Released under the MIT License.