gpt4 book ai didi

scala - 单位和无单位有什么区别?

转载 作者:行者123 更新时间:2023-12-02 03:43:40 24 4
gpt4 key购买 nike

UnitNothing 这两种类型都表示不返回任何内容的函数。他们有什么区别?

最佳答案

Unit 是一种只有一个值的类型 - 请参阅 Unit type 。另一方面,Nothing 没有可能的值 - 请参阅 Bottom type .

不返回任何内容的函数必须具有返回类型Unit。如果它是Nothing,则该函数无法返回结果。退出该函数的唯一方法是通过异常。

<小时/>

Nothing 以不同的方式使用。它有两个特点:

  1. Nothing 是所有其他类型(包括 Null)的子类型。
  2. 不存在此类型的实例。

这什么时候有用?考虑:

object None extends Option[Nothing]

因为 Option 的类型参数是协变的,并且 Nothing 是所有内容的子类型,所以 Option[Nothing] 的子类型>Option[A] 适用于每种类型 A。因此,我们可以为每个 A 创建一个对象 None,它是 Option[A] 的子类型。这是合理的,因为 Nothing 无法实例化,因此 Option[Nothing] 将始终没有值。同样

object Nil extends List[Nothing]
<小时/> Curry-Howard isomorphism 下,

Unit 对应于逻辑 true,Nothing 对应于逻辑 false。 ,我们将类型视为命题,将函数视为证明,。

关于scala - 单位和无单位有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13539822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com