scala – 如何调用仅存在于Either中的两种类型之一的方法?
发布时间:2020-12-16 18:09:50 所属栏目:安全 来源:网络整理
导读:我有一个类型为[A,B]的对象数组.如果我知道某个特定元素是A还是B,那么如何在其上调用仅存在于2种类型之一上的方法.例如: import scala.util.Randomobject EitherTest extends App { def newObj(x: Int): Either[A,B] = { if (x == 0) Left(new A()) else Ri
我有一个类型为[A,B]的对象数组.如果我知道某个特定元素是A还是B,那么如何在其上调用仅存在于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]的成员”.我怎么解决这个问题? 解决方法
我不知道为什么折叠没有得到它应得的尊重.它可能非常有用.
eitherArray.foreach(_.fold(_.aMethod(),_.bMethod())) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |