斯卡拉:案例类& copy()返回Any

时间:2014-01-24 20:43:48

标签: scala copy slick case-class

你可以帮我解决一个基本问题吗? 我有一个“Rdv”(会议)列表,其中Rdv是一个案例类,有3个字段存储电话号码作为字符串:telBureau,telPortable& TelPrivé。

我通过本机SQL查询从光滑中获取此列表;此查询使用String或“null”(空对象,而不是“null”字符串)填充3个电话号码字段。 我想删除这些空字段,所以我写了这个:

var l2:List[Rdv] = liste.list()
l2=l2.map( (w:Rdv) =>{
    if ( w.telPrivé==null ) w.copy( telPrivé = "" )
})

但是我收到了这个错误:

found:List[Any], required:List[Rdv]

所以在地图之后我添加了“.asInstanceOf [List [Rdv]]”,但后来我收到了这个错误:

java.lang.ClassCastException: scala.runtime.BoxedUnit cannot be cast to metier.Objets$Rdv

这似乎是一个基本问题,但我做不到。

奥利弗。

2 个答案:

答案 0 :(得分:5)

试试这个:

var l2: List[Rdv] = liste.list()

l2 = l2 map ((w: Rdv => if (w.telPrivé == null) w.copy( telPrivé = "" ) else w)

答案 1 :(得分:0)

你能尝试这样做吗?

val l2: List[Rdv] = liste list ()
val l3 = ls map{
  case x @ Rdv(_, null, _) => x.copy(telPrive = "")
  case x => x
}

老实说,应该创建该字段,如果它可以为Option,那么你可以调用已定义的成员函数:

case class Rdv(a: String, b: Option[String], c: String){
  def realC = b getOrElse ""
}