Nothing 不是所有类型的子类型吗?
scala> val array = new Array(5)
array: Array[Nothing] = Array(null, null, null, null, null)
scala> array.map(_ => 42)
<console>:9: error: value map is not a member of Array[Nothing]
array.map(_ => 42)
^
scala> array.filter(_ != 42)
<console>:9: error: value filter is not a member of Array[Nothing]
array.filter(_ != 42)
^
奇怪的是这不起作用。
这是指定的功能还是错误?
当您看到涉及 Nothing 的奇怪行为时,这是因为类型推断算法认为它本身插入了 Nothing,因为它是在类型推断期间引入的:如果对类型变量一无所知,那么它就会受到 Any 和 Nothing 的限制。长期以来,我一直在要做的事情清单上,看看我是否可以为此目的引入一个新的仅限内部的底部类型,以便用户级 Nothing 和推理级 Nothing 不会混合在一起,但这是一项非常雄心勃勃的任务。不过,我现在可能已经足够硬核去尝试了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)