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

Scala新手求助:实现矩阵所有元素总和的函数(解决报错)

解决Scala矩阵元素求和的错误问题

你的代码报错是因为reduce操作里的a和b都是Vector[Int]类型,Scala的Vector并没有定义+运算符来实现元素级别的求和,所以会提示"value + is not a member of Vector[Int]"。

下面是几种正确实现矩阵所有元素总和的方式:

方法一:展平后求和

先将二维Vector展平为一维,再调用sum方法:

val pixels = Vector(
  Vector(0, 1, 2),
  Vector(1, 2, 3)
)

def sum(matrix: Vector[Vector[Int]]): Int = {
  matrix.flatten.sum
}

println(sum(pixels)) // 输出9

flatten会把嵌套的Vector合并成包含所有元素的一维集合,之后的sum就能直接计算所有元素的总和。

方法二:先求每行和再累加

对每个子Vector单独求和,再将这些行的总和相加:

def sum(matrix: Vector[Vector[Int]]): Int = {
  matrix.map(_.sum).sum
}

map(_.sum)会把每个子Vector转换成它自身的元素和,得到一个存储每行总和的一维Vector,最后再对这个集合求和。

方法三:使用foldLeft手动累加

通过foldLeft初始化总和,遍历每行并累加:

def sum(matrix: Vector[Vector[Int]]): Int = {
  matrix.foldLeft(0) { (total, row) =>
    total + row.sum
  }
}

初始总和设为0,每次迭代将当前行的元素和加到总结果中,最终得到所有元素的总和。

内容的提问来源于stack exchange,提问作者Aaricia-Lila

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:15:27