第 023 期 创刊 2024
2026 年 9 月

仓颉入门到实战 / 17-Unit类型和Nothing类型

17-Unit类型和Nothing类型

对于那些只关心副作用而不关心值的表达式,它们的类型是 Unit。例如,print 函数、赋值表达式、复合赋值表达式、自增和自减表达

Unit类型

对于那些只关心副作用而不关心值的表达式,它们的类型是 Unit。例如,print 函数、赋值表达式、复合赋值表达式、自增和自减表达

式、循环表达式,它们的类型都是 Unit

Unit 类型只有一个值,也是它的字面量:()除了赋值、判等和判不等外Unit 类型不支持其他操作。

比如:

    let a = println("试试") // 输出 "试试"
    println(a) // 输出 () 

比如:

    var a = 10
    var b = a++
    println(b) // 输出 () 

比如:

    var a = 10
    var b = a++
    println(b == ()) // 输出 true  

Nothing类型

目前编译器还不允许在使用类型的地方显式地使用 Nothing 类型。

Nothing 是一种特殊的类型,它不包含任何值,并且 Nothing 类型是所有类型的子类型。

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

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

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

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

留言讨论

正在加载评论…