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

Scala Breeze库DenseMatrix使用A(::,1)赋值列报类型不匹配错误求助

问题原因

你遇到的类型不匹配报错,本质是Scala编译器没有正确识别Breeze用于切片的::通配符,反而将其解析为标准库中List的伴生对象collection.immutable.::,因此抛出“需要Int类型却得到::类型”的错误。该问题和变量A用val还是var声明无关——你修改的是矩阵内部的元素值,不是修改A的引用指向,val声明的可变对象完全支持内部值修改。

解决方案
  • 第一步:导入Breeze的切片通配符,可选择全局导入Breeze线性代数包:
import breeze.linalg._

也可以仅导入需要的::对象:

import breeze.linalg.::
  • 第二步:重新执行赋值操作即可正常运行,完整可运行示例如下:
import breeze.linalg.{DenseMatrix, DenseVector, ::}

val A = DenseMatrix.vertcat(DenseVector(11,12).toDenseMatrix, DenseVector(21,22).toDenseMatrix)
A(::, 1) = DenseVector(13, 23)
// 修改后的A输出为:
// 11  13
// 21  23

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 10:15:07