Суммирование значений нескольких Векторов в сеансе - PullRequest
0 голосов
/ 29 марта 2019

В моем сценарии Гатлинга мне нужно проверить сессию на наличие нескольких записей, которые будут векторами чисел.Я могу получить Векторы, если они есть, но когда я пытаюсь добавить их, используя .sum, я получаю ClassCastException, утверждая, что java.lang.String не может быть приведен к java.lang.Integer

Я отлаженраспечатав значение, полученное из сеанса (Vector (100,200,300)), и даже подтвердил, что отдельные элементы являются Ints.Однако, когда я пытаюсь добавить любой из них, либо с чем-то вроде values.sum или values ​​(0) + values ​​(1), я получаю исключение приведения класса

Я устанавливаю значения в сеансе с проверками вроде

.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 - так как они оба Ints, я ожидаю, что нет необходимости приводить из строки.Случай сбоя, при котором ничего не было сохранено с чека, работает нормально

1 Ответ

0 голосов
/ 16 мая 2019

Я думаю, что это проблема логического вывода типа scala - я заработал, вручную приведя к Int перед добавлением

...