仓颉编程语言基础-基本数据类型—Nothing 类型

Nothing 是一种特殊的类型,它不包含任何值。breakcontinuereturnthrow 表达式的类型是 Nothing,程序执行到这些表达式时,它们之后的代码将不会被执行。

特殊的空类型

  • Nothing 是一种特殊的类型。
  • 不包含任何值。你不能创建一个属于 Nothing 类型的实际值(实例)。
  • 关键特性:Nothing 是所有其他类型的子类型。 这意味着:在任何期望类型 A(例如 Int, String, 甚至 Unit)的地方,你都可以使用类型为 Nothing 的表达式(虽然它本身不产生值)。这使得 Nothing 在表示“程序在此处终止或非正常流转”时非常有用。

出现场景

  • Nothing 类型主要用于控制流中断语句:break: 跳出循环。continue: 跳过本次循环进入下一次。return: 从函数中返回。throw: 抛出异常。
  • break、continue、return 和 throw 表达式本身的类型就是 Nothing
  • 语义含义: 因为执行到这些表达式时,程序正常的控制流会在此处立即中断(跳出循环、返回函数、抛出异常),所以它们之后的代码绝对不会被执行

使用限制

  • return 只能用在函数体内部。 不能在函数外部使用。
  • break 和 continue 只能用在循环体 (while, for 等) 内部。 不能在循环外部使用。

编译器限制

  • 目前编译器还不允许在需要使用类型的地方显式地声明 Nothing 类型。
  • 这意味着:你不能像写 func foo(): Nothing { ... } 这样去声明一个返回 Nothing 类型的函数(尽管控制流中断语句内部隐含了这个类型)。你不能像写 let x: Nothing = ... 这样去声明一个变量类型为 Nothing(实际上你也无法构造出这样的值)。