Option
我最近对 scala 的子类型系统有所了解,并对类型及其子类型的关系产生了好奇。我了解到以下陈述是正确的。
如果 A <: B,则 (A => C) >: (B => C)
另外,我理解这A <: B
意味着存在一些B
不能是A
. 如果我将这些应用于Option
类型,那么我会得到以下结果。为方便起见,我将跳过ⱯA.
符号。
Nothing
<:Option[A]
,所以Option[A] => string
<:Nothing => string
- 我想不出任何实例
Nothing => string
不是 的实例Option[A] => string
,所以Nothing => string
<:Option[A] => string
Nothing => string
(<: 和 >:)Option[A] => string
,因此Nothing => string
实际上等于Option[A] => string
子类型化Option[A] => string
<:Some[A] => string
,所以Nothing => string
<:Some[A] => string
Some[A]
<:Nothing
由于我强烈怀疑结果是否正确,我认为中间出了点问题。谁能解释这里发生了什么?