当前位置: 首页 > 知识库问答 >
问题:

在Scala游戏中返回非未来

何宏博
2023-03-14

我有以下方法,用于返回Play for Scala应用程序中的字符串列表:

def example = Action.async { request =>

  val access = getAccess()

  if (access > 0) {
          val future = MyObject.intensiveMethod
          future.map {
              result => {
                  val list = result.asInstanceOf[List[String]]
                  val json = JsObject(Seq(
                      "list" -> Json.toJson(list)
                  ))
                  Ok(json)
              }
          }
  }
  else {
      val json = JsObject(Seq(
          "msg" -> JsString("error!")
      ))
      Ok(json)
  }

}

代码不会编译并出现以下错误,因为如果 access = 0,则结果不是 Future:

类型不匹配;找到:play.api.mvc.Result要求:scala.concurrent.Future[play.api.mvc.Result]

如何解决这个问题?

共有1个答案

潘弘扬
2023-03-14

然后用Future包装它,例如:

  Future.successful(Ok(JsObject(Seq(
      "msg" -> JsString("error!")
  ))))
 类似资料:
  • 我用的是Scala 2.10,Akka 2.1和Play 2.1。当我向后端发送一个http请求时,我要求一个参与者计算一些东西。如果计算结果在超时之前返回,则返回计算结果,否则返回另一个字符串。请参阅下面的代码。 演员如下: 我的问题是,即使演员在超时之前完成,未来也不会“返回”任何内容,因此超时总是过期。我做错了什么?谢谢。

  • 我知道之前有人问过这个问题,但我还是希望有人能帮我。我使用meteorchef的基本模板。 从ScoreTotal.js在用户界面/容器目录我做: 在服务器/出版物中,我有: 当我console.log结果时,我看到聚合有效,但我得到错误“发布函数返回非光标数组” 感谢您的帮助!

  • 正如你所看到的,计算机只是将操作系统一个接一个地按系统顺序排列,只有当它有可能获胜时才打破这个顺序来阻止X。这是一场非常防守的比赛,与3x3比赛不同。那么为什么3x3和4x4的方法表现不同呢? 代码如下: 下面是运行代码所需的其他组件和补充方法。我的类State2中使用的字段和构造函数: 补充方法: 返回板上空槽的数组(即可能的下一步移动)。 isGameOver2(),简单地检查棋盘的当前状态是

  • 问题内容: 我怎样才能返回一个 函数 副作用的词汇封闭 1 斯卡拉? 例如,我在Go中查看此代码示例: 打印1 2 3 5 8 而且我不知道如何在Scala中编写相同的内容。 1.在Apocalisp评论后更正 问题答案: 稍短一些,您不需要退货。

  • 每当我打开我的android应用程序,它就会触发三星galaxy S8上的游戏模式/游戏启动器。但这个应用程序不是一个游戏。在以前的版本中,该应用程序使用opengl,如果使用opengl,三星似乎将应用程序视为游戏。我已经删除了opengl代码,但三星仍然将该应用程序视为游戏。奇怪的是,当我更改应用程序ID时,应用程序会正常启动。所以,我认为三星将application-id作为游戏存储在某个地

  • 注意:这是一个理论性的问题,我并不试图修复任何东西,也不试图为了实际目的达到任何效果 在Scala中使用<code>(参数)创建lambda时= Lambdas与方法没有什么不同,它们都被指定为表达式,但就我的理解,方法的返回类型很容易用< code > def name(arguments):return type = expression 语法来定义。 考虑这个(说明性的)例子: