具有混合类型不匹配错误的Scala列表

时间:2018-01-09 21:32:30

标签: scala

我可以使用不同数据类型的scala列表吗?我试图创建一个硬编码不同值的projList但我得到了不匹配错误。我不知道如何将Any转换为Long,Timestamp和Boolean。有任何想法吗?请指教。谢谢!

val cTime: Timestamp = new Timestamp(System.currentTimeMillis())
val projList = List("test", 102, cTime, true)
Project(projList(0), projList(1), projList(2), projList(3))

type mismatch;
[error]  found   : Any
[error]  required: Long
[error]  Project(1, projList(0).toString, projList(1), projList(2), projList(3))

2 个答案:

答案 0 :(得分:0)

您创建的列表是List[Any]。您可以使用包含4种类型的Tuple4

val projParams = ("test", 102, cTime, true)
Project(projParams._1, projParams._2, projParams._3, projParams._4)

为什么要这么麻烦?

Project("test", 102, cTime, true)

答案 1 :(得分:0)

我不知道你为什么使用List [Any],看起来像一个完整的反模式,但如果你真的需要,那么你可以像这样抛出变量:

Project(projList(0).asInstanceOf[String], 
  projList(1).asInstanceOf[Long], 
  projList(2).asInstanceOf[Timestamp], 
  projList(3).asInstanceOf[Boolean])

请注意,120是一个整数,并且无法解析为Long,您应该使用120L