这一定是可能的,但我无法在网上找到任何示例或指导......
我正在尝试从Either
返回中提取变量,其中Left
可以有一个Exception
案例类,其中包含我想要的值或一个Right
,其值为I想。
说明:
def findInnerObj(innerObjId: String): Either[InnerObjNotFoundException, (OuterObj, InnerObj)] = ???
case class InnerObjNotFoundException(outer: OuterObj) extends Exception
用法:
findInnerObj(innerObjId) match {
case Left(InnerObjNotFoundException(x)) | Right((x, _)) =>
// do something with x <-- ATM, compiler: "Cannot resolve symbol x"
}
答案 0 :(得分:3)
不支持带名称绑定的模式替代方案,您可以这样做。
val innerObj = findInnerObj(innerObjId) match {
case Left(InnerObjNotFoundException(x)) => x
case Right((x, _)) => x
}
// do something with innerObj