0

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]です
    1. 制約 を満たしますA1 >: A, B1 >: B
    2. 具体化するA1 <: Either[C, B1]

  • そのためには、暗黙的 conforms[A1]およびconforms[Either[C, B1]]

私が今でも正しければ、 と の下限を超えている限り、 と には多くの選択肢があるように思えA1ます。だから私はscalaが私たちに and (そしてそれらが何であるか) を与える方法を知りたいと思っています.B1ABA1Either[C, B1]conforms<:<A1 <: Either[C, B1]

PS
この質問は、私の別の質問 " joinLeft [A1 >: A, B1 >: B, C]... なぜ型制約 A1 >: A および B1>: B が必要なのですか? " に多少関連していると思います。どなたでもご覧いただけますと幸いです。

4

1 に答える 1