scala.math.BigInt не может быть приведен к java.lang.Long - PullRequest
0 голосов
/ 24 мая 2018

Я получаю выше ошибку при вызове этой функции

def filterOutNoInvPrices(storeNum: Long, inventoryMap: Map[Long, Long]) = {
    val inv = inventoryMap.get(storeNum)
    val minimumUnitsCheck:Boolean = inv.nonEmpty && inv.get.toInt > 3
    println("what" + minimumUnitsCheck)
    if (minimumUnitsCheck) {
      Some(storeNum, inv.get)
    }
    else
      None
  }

Если быть более точным, это на линии inv.nonEmpty && inv.get.toInt > 3.Функция, в которой я вызывал filterOutNoInvPrices: getBasicStats:

def getBasicStats(priceMap:Map[Long, String], invMap:Map[Long, Long])={
    priceMap
      .toSeq
      .map(storeAndPrice => {
        val price = getPriceAndPriceType(storeAndPrice._2)._1
        (price, filterOutNoInvPrices(storeAndPrice._1, invMap))})
      .filter(_._2.nonEmpty)
      .map(record => (record._1, record._2.get))
  }

Перед тем, как вызывать эту функцию, я явно позволил инвентаризации составить Map[Long, Long].

val invMap:Map[Long, Long] = inventoryMap
val pMap:Map[Long, String] = priceMap
val basicStats = getBasicStats(pMap, invMap)

Мой код успешно компилируется.Я получаю эту ошибку при запуске тестов.Я прошел свои собственные тестовые данные, но если это вызвано данными, должно ли отображение данных завершиться неудачно раньше (например, когда я явно запросил карту?), Это далеко вниз.

  1. Я не понимаю, почему я получаю эту ошибку
  2. откуда я взял BigInt.
  3. почему он приводится к java.lang.Long довольночем scala.Long.

Самая последняя трассировка стека - scala.runtime.BoxesRunTime.unboxToLong(BoxesRunTime.java:105)

...