无法重构Scala代码以使其更具可读性

问题描述 投票:0回答:1

我很难理解Scala,因此想重构一段代码,使其更加脱糖。但我无法这样做。

原始代码是

def index(signupMessage:String = "") = addToken { //addToken is of CSRFAddToken
        silhouette.UserAwareAction { implicit request =>
        println(s"index action called with request ${utilities.printPlayHttpRequest(request)}")
          //TODOM - fix as signup value is coming up as ;signup=error or ;signup=success instead of just success or error
        println(s"index page's argument "+signupMessage)
        val Token(name, value) = CSRF.getToken.get
        println(s"Token name ${name}, value ${value}")
        Ok(views.html.index(signupMessage,messagesApi("app.title")(langs.availables(0))))
      }
    }

我想减少代码并使调用更明确。我在想以下几行

def index(signupMessage:String = "") = {
    val block:Action[AnyContent] = (implicit request) =>{ //THE ERROR IS HERE - '=>' expected but ')' found
      println(s"index action called with request ${utilities.printPlayHttpRequest(request)}")
      //TODOM - fix as signup value is coming up as ;signup=error or ;signup=success instead of just success or error
      println(s"index page's argument "+signupMessage)
      val Token(name, value) = CSRF.getToken.get
      println(s"Token name ${name}, value ${value}")
      Ok(views.html.index(signupMessage,messagesApi("app.title")(langs.availables(0))))
    }
    val silhouttedCode = silhouette.UserAwareAction.apply(block)
    addToken.apply(silhouettedCode)
  }

上面的代码不能编译。我究竟做错了什么?

scala playframework-2.6
1个回答
1
投票

我想你需要像这样写你的Action

val block = Action { implicit request =>
  // Rest of code here
}

the docs for Actions

© www.soinside.com 2019 - 2024. All rights reserved.