【发布时间】:2020-09-29 06:38:33
【问题描述】:
我正在研究应该是一段微不足道的代码。我想获取一个列表,并将其转换为等效的数组:
import scala.collection.JavaConverters
object Help extends App {
def f1[T](lst: List[T]) = {
lst.toArray
}
val x = List(1, 2, 3)
println(f1(x))
}
运行此代码给出:
"No ClassTag available for T"
我怎样才能避免这个问题;我来自 Python 背景,因此希望能够让我了解这里的机制。
谢谢!
【问题讨论】:
-
这个:
import scala.collection.JavaConverters是不必要的。无论如何,这是一个微不足道且常见的问题,你只需要制作这个def f1[T : ClassTag](lst: List[T]): Array[T] = {- 顺便说一句,你为什么想要一个数组?数组是低级原语,不是集合,它们有很多像这样的问题,我建议远离它们,除非你需要使用它们。 -
感谢@LuisMiguelMejíaSuárez,我实际上在使用 gson 库,它似乎与 Arrays 相比,它与 Scala Lists 相比更好。
-
不要使用 gson,至少有 5 个很棒的 Scala 子库。为什么要使用与 scala 类型不兼容的 Java?
标签: java scala types jvm classtag