我是 scala 新手,我将一些代码从 scala 2.12 迁移到 13。我有以下代码
override def transformSchema(schema: StructType): StructType = {
StructType(schema.fields ++ this.getOutputCols.map[StructField, Array[StructField]]( col => StructField(col, StringType)))
}
Run Code Online (Sandbox Code Playgroud)
我面临以下错误:
wrong number of type parameters for method map: [B](f: String => B)(implicit ct: scala.reflect.ClassTag[B]): Array[B]
[ERROR] StructType(schema.fields ++ this.getOutputCols.map[StructField, Array[StructField]]( col => StructField(col, StringType)))
Run Code Online (Sandbox Code Playgroud)
你能解释一下为什么scala 2.13有这个问题吗,我没有找到与文档相关的东西map方法尝试转换数组,应该没问题
2.13 是集合的重写 - 请参阅https://docs.scala-lang.org/overviews/core/collections-migration-213.html。
特别是在您的情况下,问题与错误所述完全相同:
.map
def map[B, That](f: A => B)(implicit cbf: CanBuildFrom[Array[A], B, That]): That
Run Code Online (Sandbox Code Playgroud)
.map
def map[B](f: A => B): Array[B]
Run Code Online (Sandbox Code Playgroud)
所以在 2.13 中应该是
StructType(schema.fields ++ getOutputCols.map[StructField](col => StructField(col, StringType)))
Run Code Online (Sandbox Code Playgroud)