अक्सर मैं नेस्टेड .map और .getOrElse के बहुत सारे के साथ खत्म होता है जब कई consecutives स्थितिस्केला शैली - कैसे
उदाहरण के लिएमान्य नेस्टेड नक्शे के बहुत से बचने के लिए:
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
और विभिन्न स्तरों पर अलग-अलग 'BadRequest' प्रतिक्रियाओं को कैसे बनाए रखता है? ऐसा लगता है कि सीधा-आगे दृष्टिकोण को रोकने में महत्वपूर्ण समस्या है। मैं सोच रहा हूं कि पैटर्न मिलान इस पर निर्भर है? –
यह सही है। एक अनिवार्य भाषा में जैसे ही मुझे कोई त्रुटि मिलती है, मैं बस विधि से बाहर हो जाऊंगा। लेकिन जब मैंने इसे करने की कोशिश की, तो मुझे रिटर्न स्टेटमेंट के साथ कई समस्याओं का सामना करना पड़ा http://stackoverflow.com/questions/11929485/scala-problems-with-return-statement/11929616#11929616 – opensas