如何更改scala中的任何数组?
阵列如何更改scala中的任何数组?,scala,Scala,阵列arr是固定的。在这种情况下,如何将arr(0)更改为Array[Double] 1) 首先不要强制转换到Array[Any]: 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) 2) 使用匹配: val arr: Array[Array[Double]] = Array
arr
是固定的。在这种情况下,如何将arr(0)
更改为Array[Double]
1) 首先不要强制转换到Array[Any]
:
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)
2) 使用匹配:
val arr: Array[Array[Double]] = Array(Array(1.0, 2.0))
val arr0: Array[Double] = arr(0)
3) 将用作安装
:
val arr0: Array[Double] = arr(0) match {
case a: Array[Double] => a
}
这些都是按优先顺序排列的,选项1是迄今为止最好的解决方案,因为它避免了丢弃类型信息。不要强制返回类型为any。推断为any
通常意味着有错误,我宁愿选择3而不是2(警告它们都不好);2只是毫无意义地更长,效率更低。
val arr0: Array[Double] = arr(0).asInstanceOf[Array[Double]]