я начал с этим (в методе Play Action):Более функциональный и лаконичный способ написать это в Scala
val foo = JPA.em.find(classOf[Foo], id)
if (foo == null) NotFound("Bad Id") else Ok(Json.toJson(foo))
не нравится его императивность, я пошел на это:
Option(JPA.em.find(classOf[Foo], id)) match {
case Some(foo) => Ok(Json.toJson(foo))
case None => NotFound("Bad Id")
}
более функциональный, но дольше.
Приносим извинения за общий характер вопроса, но я уверен, что ответы могут быть полезны для многих.
Я не уверен, что «более функциональный» и «лаконичный», поскольку критерии сложны и достаточно быстры для решения вопроса SO. * Может быть * [codereview.se], но я не знаком с политиками этого сайта и не имеет ли «у меня этот код, сделайте это лучше», для него достаточно конкретных вопросов. – millimoose
Тем не менее, ваш последний пример больше похож на то, что вы говорите по поводу соглашений FP, а не на самом деле функционально каким-либо значимым образом. Я придерживаюсь первого и беспокоюсь о том, где важны преимущества FP (например, возможность компоновки фактических функций), а не одержимость над отдельными утверждениями. Это похоже на попытку сделать код «более объективным», заменив методы интерфейсом «ICallable». – millimoose
Дело не в том, чтобы сделать этот фрагмент кода лучше, а просто понять, как это можно сделать в целом. –