joinLeft
定义为:
abstract class Either[+A, +B]
def joinLeft[A1 >: A, B1 >: B, C](implicit ev: A1 <:< Either[C, B1]):
Either[C, B1] = this match {
case Left(a) => a
case Right(b) => Right(b)
}
- 有了已知的
A
andB
,我们需要一个implicit ev: A1 <:< Either[C, B1]
that- 满足约束
A1 >: A, B1 >: B
。 - 物化
A1 <: Either[C, B1]
- 满足约束
- 为此,我们需要隐式
conforms[A1]
和conforms[Either[C, B1]]
如果直到现在我仍然是正确的,那么在我看来,A1
只要B1
它们超出下限A
和B
. 所以我想知道 scala 如何给我们A1
和Either[C, B1]
(以及它们是什么),以便我们隐含conforms
以促进<:<
完成断言的工作A1 <: Either[C, B1]
。
PS
我认为这个问题与我的另一个问题有点相关“ joinLeft [A1 >: A, B1 >: B, C]... 为什么类型约束 A1 >: A and B1>: B 是必要的? ”。如果有人也可以看看它,我将不胜感激。