很多時候,我確認幾個consecutives條件Scala的風格 - 如何避免大量嵌套地圖
例如,當結束了大量的嵌套.MAP和.getOrElse的:
def save() = CORSAction { request =>
request.body.asJson.map { json =>
json.asOpt[Feature].map { feature =>
MaxEntitiyValidator.checkMaxEntitiesFeature(feature).map { rs =>
feature.save.map { feature =>
Ok(toJson(feature.update).toString)
}.getOrElse {
BadRequest(toJson(
Error(status = BAD_REQUEST, message = "Error creating feature entity")
))
}
}.getOrElse {
BadRequest(toJson(
Error(status = BAD_REQUEST, message = "You have already reached the limit of feature.")
))
}
}.getOrElse {
BadRequest(toJson(
Error(status = BAD_REQUEST, message = "Invalid feature entity")
))
}
}.getOrElse {
BadRequest(toJson(
Error(status = BAD_REQUEST, message = "Expecting JSON data")
))
}
}
你得到的想法
我只是想知道是否有保留它更清晰
非常感謝您的回答,我發佈的代碼可以編譯,但我想這個例子有點太複雜了... – opensas 2012-08-13 07:15:19
如何在不同層次上維護不同的「BadRequest」響應?這似乎是阻止直接方法的關鍵問題。我想知道模式匹配是否符合這個要求? – 2012-08-13 07:15:26
沒錯。用一種命令式的語言,只要我發現錯誤,我就會失敗。但是,當我試圖做到這一點,我面臨與return語句的幾個問題http://stackoverflow.com/questions/11929485/scala-problems-with-return-statement/11929616#11929616 – opensas 2012-08-13 07:24:29