學習Scala並試圖重構以下兩個函數以刪除重複的邏輯。我應該創建一個更高階的函數或其他東西來避免重複的代碼?在調用不同的Domain方法時,只需添加一些與此類重複代碼類似的方法。重構Scala中的高階函數?
對重構有點困惑。使用斯卡拉版本2.10
def authenticate = Action(parse.json) { request =>
val json = request.body
val input = Json.fromJson[User](json)
input.asOpt match {
case Some(m: User) => Ok(Domain.authenticate(m)).as("application/json")
case None => Ok("bad input")
}
}
def addUser = Action(parse.json) { request =>
val json = request.body
val input = Json.fromJson[User](json)
input.asOpt match {
case Some(m: User) => Ok(Domain.addUser(m)).as("application/json")
case None => Ok("bad input")
}
}
一個簡單的程序分解(寫一個私有方法來捕捉常見'match'兩種方法的一部分)會做得很好。 – 2013-02-13 04:25:37