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

Scala执行报错:类型不匹配,found List[String] required IterableOnce[Nothing]

问题根因

  • 你定义var merge = List()的时候没有显式指定List的元素类型,Scala编译器会自动把空List的类型推断为List[Nothing]
  • Nothing是Scala类型系统里的最底类型,不存在实例,也无法兼容你后续追加的List[String]类型数据,所以调用++=方法的时候会报类型不匹配的错误

修复方案

只需要修改merge变量的定义,显式指定元素类型为String即可:

var merge: List[String] = List()
// 或者更简洁的写法
var merge = List.empty[String]

额外优化建议

如果后续需要频繁对集合做追加操作,List是不可变集合,每次++=都会生成新的List实例,性能较差,可以改用可变集合ListBuffer:

import scala.collection.mutable.ListBuffer
var merge = ListBuffer[String]()
// 后续追加元素的逻辑不变,仍然可以用++=
merge ++= Source.fromFile(filepath).getLines.toList
// 最后需要转成List的话调用toList即可
val mergeList = merge.toList

内容的提问来源于stack exchange,提问作者Dhrumil Shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:48:04