Scala 布尔值总是返回 false

Scala boolean always returning false

我想知道为什么即使数据库的结果不为空,以下函数 doesMsgExist() 总是 returns false

def doesMsgExist(name: String, age: String): Boolean = {
    var result = false
    val msgExistsFlag = checkExistingMessages(db.getDocument(name, age))
    msgExistsFlag.foreach(isTrue => result = if(isTrue) false else true)
    result
  }


  def checkExistingMessages(resultFromDB: Future[List[BSONDocument]]): Future[Boolean] = {

    resultFromDB.map { list =>

      if (list.isEmpty) {
        false
      }
      else true
    }

  }

您立即 returning result 但您正在使用 Future 对其进行评估。这意味着正在创建表示计算的对象,但您无法保证 计算将解决。因此,你 return 的值是 false.

Future 视为将来会发生的某些操作的占位符。如果您想捕获实际结果,您应该使用这样的签名来做一些事情:

def doesMsgExist(name: String, age: Boolean): Future[Boolean] =

并使用 Future 进行评估 return。如果没有,您将不得不用 Await.

将其包围