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

Scala调用reduceLeft/Right时IntelliJ报cannot resolve symbol x错误

Scala调用reduceLeft/reduceRight提示cannot resolve symbol x修复

问题现象

  • 开发环境:IntelliJ IDEA Build #IC-221.5591.52(2022年5月10日构建),Scala SDK版本为scala-sdk-2.11.12
  • 报错位置:以下两行代码提示符号x无法解析
println(lst.reduceLeft((x,y) => {println(x + " , "+ y) x +y}))
println(lst.reduceRight((x,y) => {println(x + " , "+ y) x -y}))

报错根因

Scala默认以换行作为语句分隔标记,如果两个独立表达式写在同一行,必须用分号;显式分隔,否则编译器无法正确拆分语句结构。
上述报错代码的匿名函数块中,println打印语句和后续的计算返回值语句写在同一行且没有添加分隔符,编译器解析完println调用后,会把后面的x识别为未定义的新符号,直接抛出解析错误。该问题和IDEA版本、Scala SDK版本无关,IDEA给出的自动修复建议未命中语法错误点,所以无法解决问题。

修复方法

两种合法写法二选一即可:

  1. 同行写时添加分号分隔两个表达式
// 修复reduceLeft调用行
println(lst.reduceLeft((x,y) => {println(x + " , "+ y); x + y}))
// 修复reduceRight调用行
println(lst.reduceRight((x,y) => {println(x + " , "+ y); x - y}))
  1. 两个表达式换行书写,Scala会自动识别语句分隔,无需额外加分号
println(lst.reduceLeft((x,y) => {
  println(x + " , "+ y)
  x + y
}))

println(lst.reduceRight((x,y) => {
  println(x + " , "+ y)
  x - y
}))

额外代码结构问题修正

提供的完整测试代码中存在一个多余的空包定义块package pack {},会导致对象obj2被定义在包外,直接删除该空块即可正常运行,修复后的完整可运行代码如下:

//In Scala Reduce, fold or scan are most commonly used with  collections in the form of reduceLeft, reduceRight, foldLeft, foldRight, scanLeft or scanRight.
// In general, all functions apply a binary operator to each element of a collection.
// The result of each step is passed on to the next step.

object obj2 {
  println
  println("=====started=======")
  println

  val lst = List(1, 2, 3, 5, 7, 10, 13)
  val lst2 = List("A", "B", "C")

  def main(args: Array[String]) {
    println(lst.reduceLeft(_ + _))
    println(lst2.reduceLeft(_ + _))
    println(lst.reduceLeft((x,y) => {println(x + " , "+ y); x +y}))

    println(lst.reduceLeft(_ - _))
    println(lst.reduceRight(_ - _))
    println(lst.reduceRight((x,y) => {println(x + " , "+ y); x -y}))

    println(lst.foldLeft(100)(_ + _))
    println(lst2.foldLeft("z")(_ + _))
    println(lst.scanLeft(100)(_ + _))
    println(lst2.scanLeft("z")(_ + _))
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:31:00