Scala 未找到编译错误:值x,但我已经声明了它,什么';这是不对的

Scala 未找到编译错误:值x,但我已经声明了它,什么';这是不对的,scala,Scala,未找到编译错误:值x,但我已经声明了它,我的实现有什么问题,很抱歉,我不熟悉框架和scala编程语言 我想说这一行是问题所在: val totalpages:Int=(totaldocs/ipp)+1 因为totaldocs仅在map范围内定义 也许你想要这样的东西: result.map { res => val totaldocs: Int = res.value // do something with this number } //

未找到编译错误:值x,但我已经声明了它,我的实现有什么问题,很抱歉,我不熟悉框架和scala编程语言


我想说这一行是问题所在:

val totalpages:Int=(totaldocs/ipp)+1

因为
totaldocs
仅在
map
范围内定义

也许你想要这样的东西:

    result.map { res =>
      val totaldocs: Int = res.value
      // do something with this number
    }
    //val  totaldocs = 60
    val totalpages:Int = (totaldocs/ipp)+1
但是现在它将返回Future[Int],您必须在调用者上处理Future

注意:这只是一个解决方案,取决于您的代码,它可能不是最合适的解决方案


你能提供完整的编译器输出吗?对于线条,此代码中没有提到
x
。它将给出一个不同的错误。当询问编译错误时,始终确保使用的代码版本与产生错误的代码版本相同,并提供完整的信息。我更新了我的问题。你真的需要阅读一些Scala教程/书籍递归值totalDocs需要类型你的意思是:你必须处理调用者的未来。?这意味着这个方法签名将改变,调用这个签名的方法可能必须改变一些代码
private def getTotalPages(query:BSONDocument, ipp:Int) (implicit ec: ExecutionContext) = {
    val key = collectionName + ":" + BSONDocument.pretty(query)
    Logger.debug("Query key = "+key)
    val command = Count(query)
    val result: Future[CountResult] = collection.runCommand(command)
    result.map { res =>
      val totaldocs: Int = res.value
      // do something with this number

      val totalpages:Int = (totaldocs/ipp)+1
      Logger.debug(s"Total docs $totaldocs, Total pages $totalpages, Items per page, $ipp")
      totalpages
    }
  }