You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala 2.13迁移报错:map方法类型参数数量不符

Scala 2.12迁移至2.13:Array.map方法类型参数报错问题解析

错误原因

Scala 2.13对集合库做了大幅重构,其中Array的map方法签名发生了关键变化:

  • 在Scala 2.12中,Array的map基于CanBuildFrom机制,允许传入两个类型参数(目标元素类型B和最终集合类型That);
  • 但Scala 2.13移除了CanBuildFrom,Array.map的签名简化为仅接受一个类型参数B,返回类型固定为Array[B](通过隐式ClassTag[B]自动生成数组实例)。

你代码中给map传入了[StructField, Array[StructField]]两个类型参数,完全不符合Scala 2.13中map方法的签名要求,因此触发参数数量错误。

修复方案

只需要保留目标元素类型的参数(或直接让编译器自动推导,因为lambda的返回值已经明确是StructField),两种写法都可行:

写法1:显式指定元素类型

override def transformSchema(schema: StructType): StructType = {
  StructType(schema.fields ++ this.getOutputCols.map[StructField](col => StructField(col, StringType)))
}

写法2:让编译器自动推导类型

override def transformSchema(schema: StructType): StructType = {
  StructType(schema.fields ++ this.getOutputCols.map(col => StructField(col, StringType)))
}

内容的提问来源于stack exchange,提问作者Alexandros Mouzakidis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 07:08:13