在Scala中将Any类型的包装数组转换为数组类型

5

我有一个类型为Any的WrappedArray值。如何将其转换为Array。

例如:

val flds = valArr(0)(2)
flds: Any = WrappedArray(F1,F2,F3,F4,F5)

我尝试将flds转换为字符串数组..

val flds = valArr(0)(2).toArray

但是我得到了以下错误。
<console>:41: error: value toArray is not a member of Any

我该如何转换?我只想遍历wrappedArray,但不知道如何实现。这就是为什么我试图将其转换为数组并遍历它的原因。


WrappedArray应该像一个数组一样运行,这样你就可以像在数组中一样循环。 - Ramesh Maharjan
3个回答

5
这是如何从Array获取WrappedArray或者相反的过程:
val warr: WrappedArray[Int] = WrappedArray.make(Array(1, 2, 3))
val arr: Array[Int] = warr.array

或者

val warr: WrappedArray[Int] = Array(1, 2, 3) // implicit conversion
val arr: Array[Int] = warr.array

那么当值为“Any”时,这个方法是如何解决问题的呢? Spark的数据框架返回的是Any=WrappedArray。 - user5012823
@CarlZmola 强制类型转换? - Dmytro Mitin

2

从一个WrappedArray [任意类型]开始

val warr: WrappedArray[Any] = WrappedArray.make(Array(1, 2, 3))

我可以通过以下方式访问 Array[Int]
val arr: Array[Int] = warr.toArray.map(_.asInstanceOf[Int])

1

首先你需要告诉Scala,你的WrappedArray是一个WrappedArray,因此:

import scala.collection.mutable.WrappedArray
val warr = flds.asInstanceOf[WrappedArray[T]]

其中T是数组内容的类型。之后,您将拥有WrappedArray的所有方法,例如warr.toArray


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接