如何從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