私はタイプが[A、B]のオブジェクトの配列を持っています。特定の要素がAかBのどちらであるかを知っているなら、どのように2つの型のうちの1つにしか存在しないメソッドを呼び出すことができます。例えば:私はこのコードをコンパイルするときいずれかの2つのタイプのいずれかにしか存在しないメソッドを呼び出すにはどうすればよいですか?
import scala.util.Random
object EitherTest extends App {
def newObj(x: Int): Either[A,B] = {
if (x == 0)
Left(new A())
else
Right(new B())
}
val random = new Random()
val randomArray = (0 until 10).map(_ => random.nextInt(2))
val eitherArray = randomArray.map(newObj)
(0 until 10).foreach(x => randomArray(x) match {
case 0 => eitherArray(x).aMethod()
case 1 => eitherArray(x).bMethod()
case _ => println("Error!")
})
}
class A {
def aMethod() = println("A")
}
class B {
def bMethod() = println("B")
}
、ライン
case 0 => eitherArray(x).aMethod()
case 1 => eitherArray(x).bMethod()
両方がエラー "値aMethodのいずれか[A、B]のメンバーではない" を有します。これをどうすれば解決できますか?
'bothArray(x).left.foreach(_。aMethod)' ... – Dima