如何在Scala中将Any更改为Array?

时间:2018-08-29 07:41:38

标签: scala

scala> val arr = Array[Any](Array(1.0, 2.0))
arr: Array[Any] = Array(Array(1.0, 2.0))

scala> arr(0)
res28: Any = Array(1.0, 2.0)

数组arr是固定的。在这种情况下如何将arr(0)更改为Array[Double]

1 个答案:

答案 0 :(得分:3)

共有三个选项:

1)首先不要投射到Array[Any]

val arr: Array[Array[Double]] = Array(Array(1.0, 2.0))
val arr0: Array[Double] = arr(0)      

2)使用match

val arr0: Array[Double] = arr(0) match {
  case a: Array[Double] => a
}

3)使用asInstanceOf

val arr0: Array[Double] = arr(0).asInstanceOf[Array[Double]]

这些按优先顺序排列,到目前为止,选项1是最好的解决方案,因为它避免了丢弃类型信息。