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
場合B
、 が必要implicit ev: A1 <:< Either[C, B1]
です- 制約 を満たします
A1 >: A, B1 >: B
。 - 具体化する
A1 <: Either[C, B1]
- 制約 を満たします
- そのためには、暗黙的
conforms[A1]
およびconforms[Either[C, B1]]
私が今でも正しければ、 と の下限を超えている限り、 と には多くの選択肢があるように思えA1
ます。だから私はscalaが私たちに and (そしてそれらが何であるか) を与える方法を知りたいと思っています.B1
A
B
A1
Either[C, B1]
conforms
<:<
A1 <: Either[C, B1]
PS
この質問は、私の別の質問 " joinLeft [A1 >: A, B1 >: B, C]... なぜ型制約 A1 >: A および B1>: B が必要なのですか? " に多少関連していると思います。どなたでもご覧いただけますと幸いです。