如何从scala中的扩展类中获取基类。实际上,我是Scala的新手,并尝试使用密封特征类编写一些编码。Scala中的密封特征类转换
例如,我有一个密封跟踪类和一些案例类扩展到密封跟踪类。
如:下列类型的
sealed trait Person
case class Employer(name: String, id: Int, country: List[String]) extends Person
case class Employee(name: String, id: Int) extends Person
我期待例如:
type example1 = RDD[(String, Int, Person)] => RDD[((String, Int), Employee)]
type example2 = RDD[(String, Int, List[Employer])] => RDD[((String, Int), List[Person])]
对于例1:我想以下几点:
def getType1(data: RDD[(String, Int, Person)]) = {
val res = data.map {
x => {
val emp = x._3.asInstanceOf[Employee]
((x._1, X._2), Employee(emp.name, emp.id)
)
}
}
}
但如何做反向对于类型example2? 一个例子会帮助我理解我的项目,请为我提供建议。
请注意,你的第一个例子是不安全的。如果人员不是员工,您将在运行时得到异常。你想用拥有雇主的记录来做什么? – puhlen
此外,您已将雇主定义为与国家/地区字段相同的类别,但正尝试与员工一起使用,我认为这是一个错字,请修正它以避免混淆。 – puhlen