Scala 为什么我不应该';不要用任何东西代替装置

Scala 为什么我不应该';不要用任何东西代替装置,scala,Scala,我看着Scala的层次结构,然后在我的脑海中点击 如果我声明Nonelike选项[Unit]和Nillike列表[Unit] 单位和无的区别到底是什么 如果我开始不使用任何东西来代替设备,会发生什么 谢谢没有类型为Nothing的元素 只有单元类型的元素,即() Nothing是任何类型的子类型。任何类型的值都可以转换为单位类型。一个区别是单位类型只有一个值(()),而没有任何值。因此,您无法从nothing-返回方法返回任何内容,这意味着所有返回类型为nothing的合法方法必须永远循环、抛出

我看着Scala的层次结构,然后在我的脑海中点击

如果我声明
None
like
选项[Unit]
Nil
like
列表[Unit]

单位和无的区别到底是什么

如果我开始不使用任何东西来代替设备,会发生什么


谢谢

没有类型为
Nothing
的元素

只有
单元
类型的元素,即
()


Nothing
是任何类型的子类型。任何类型的值都可以转换为
单位
类型。

一个区别是
单位
类型只有一个值(
()
),而
没有任何值。因此,您无法从
nothing
-返回方法返回任何内容,这意味着所有返回类型为
nothing
的合法方法必须永远循环、抛出异常或永远无法到达函数的常规结尾

另一个区别是,
Nothing
是每种类型的子类型,
Unit
不是

如果我声明None-like选项[Unit]和Nil-like列表[Unit],会怎么样

然后,在创建除
单元
以外的任何类型的列表或选项时,您将无法使用这些值

如果我开始不使用任何东西来代替设备,会发生什么


您的代码将不再编译,因为您的方法将尝试返回错误的类型。

我刚刚更新了问题。您是否也可以相应地更新答案以澄清@sepp2k answer(这是完全正确的),如果您将None声明为Option[Unit],那么您将无法执行:val None:Option[Int]=None,因为Unit不是Int的子类型