【发布时间】:2017-09-08 16:14:31
【问题描述】:
如何从 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 类型如何做相反的事情呢? 一个例子将帮助我理解我的项目,请给我建议。
【问题讨论】:
-
请注意,您的第一个示例并不安全。如果 Person 不是 Employee,您将在运行时收到异常。您想对包含 Employer 的记录做什么?
-
另外,您已将 Employer 定义为具有 country 字段的类,但尝试与 Employee 一起使用,我认为这是一个错字,请修正它以避免混淆。