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