对session中多个Vector的值求和

Summing the values of multiple Vectors in the session

在我的加特林场景中,我需要检查会话中的一些条目,这些条目将是数字向量。如果存在向量,我可以获得向量,但是当我尝试使用 .sum 添加它们时,我得到一个 ClassCastException,指出 java.lang.String 不能转换为 java.lang.Integer

我已经通过打印出从会话中检索到的值 (Vector(100,200,300)) 进行了调试,甚至确认各个元素都是 Ints。但是,当我尝试添加它们中的任何一个时,无论是使用 values.sum 还是 values(0)+values(1) 之类的东西,我都会得到 class cast exception

我在会话中使用

等检查设置值
.check(jsonPath("$..payments..paymentAmount").findAll.optional.saveAs("payments"))
.check(jsonPath("$..receipts..receiptAmount").findAll.optional.saveAs("receipts"))

在我的应用程序中,如果路径存在,这些结果总是会产生类似 Vector(100, 200, 300) 的结果

然后我想对这些列表中的所有值求和,这样我就有了操作

.exec(session => {
   def addAmounts(listNames: Array[String]): Int = {
          listNames.foldLeft(0)((acc, listName) => {
            session(listName).validate[Seq[Int]] match {
              case Success(ints) =>  ints.sum + acc
              case Failure(error) => acc
          }})
   }

   val transactionsTotal = addAmounts(Array("payments", "receipts"))
   session.set("total",transactionsTotal) 
}

如前所述,这在 listName.sum + acc 语句上失败了——因为它们都是整数,我希望不需要从字符串中转换 没有从检查中存储任何内容的失败案例工作正常

我认为这是一个 Scala 类型推断问题 - 我通过在执行加法之前手动转换为 Int 使其工作