为 Scala 演奏:函数没有 return

Play for Scala: function doesn't return

这很可能是一个新手问题。请注意,当函数打印 "continues" 时,有一个 if 1!=2 不起作用。 return 有什么问题?

def doSomething () = {  

      val json: JsValue = JsObject(Seq(
          "ret" -> JsString("1"),
          "msg" -> JsString("Some Msg")
      ))

      if (1 != 2)
         Ok(json))

      println("continues")

      Ok(json)
}

在 Play 中,Ok 并没有真正完成函数,而 Scala 只是 returns 最后一个过程的结果,在你的例子中,它没有 return if 中的 Ok,因为它仍然有 运行 的代码,尝试在 else 中使用 print 和第二个 Ok,这样方法就没有任何东西了else to 运行 如果进入 if

def doSomething () = {  

  val json: JsValue = JsObject(Seq(
      "ret" -> JsString("1"),
      "msg" -> JsString("Some Msg")
  ))

  if (1 != 2) {
     Ok(json))
  } else {
    println("continues")

    Ok(json)
  }
}