繁体   English   中英

自动在Scala中投放

[英]Automatic cast in scala

我正在从一个列表中访问元素,该列表可以属于两个不同的类。 例如:

sealed abstract class A
case class B extends A
case class C extends A
...
var l = List[A] // every element in this list belongs either to B or C

从此列表中弹出元素时,我想了解它们是属于B还是C并采取相应的行动。 我想避免创建一个大的匹配案例,例如:

elem = l.head
elem match {
    case v:B => //code for B
    case v:C => //code for C
}

我想做以下事情:

val elem = l.head
var k = elem match {
      case v:B => v.asInstanceOf[B]
      case v:C => v.asInstanceOf[C]
  }

除与运行时检查的唯一机会case要避免将使用HList作为例如shapeless -library提供。

https://github.com/milessabin/shapeless

这将允许您保留否则会丢失的类型信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM