2015-01-31 2 views
-1

Play 프레임 워크에는 기본적으로 포함 된 렌즈 지원이 포함되어 있지 않습니까? Monocole 또는 Scalaz와 같은 것. 어쩌면 내가 알지 못하는 대안적인 접근법 (그들의 이론적 근거와 함께)이 권장 될지도 모른다.Play 프레임 워크에서의 렌즈 지원

시나리오 : 저는 케이스 클래스에 대해 불변의 깊게 중첩 된 개체를 가지고 있으며 개체의 어딘가에서 변경된 필드로 복사하려고합니다.

저는 Monocole과 같은 렌즈 라이브러리와 마찬가지로 훨씬 많은 보일러 플레이트가 필요없이이 작업을 매우 간단하게 수행 할 것입니다.

Play 프레임 워크에 내장 된 지원 기능이 없다는 것에 놀랐습니다. 뭔가 놓쳤습니까? 그렇지 않은 경우이 지원에 대한 알려진 계획이 있습니까?

+6

렌즈는 웹 프레임 워크에서 다소 직각으로 관심사입니까? 저는 여러분이 좋아하는 기존 라이브러리를 섞어서 매치시켜야한다는 철학을 생각합니다. 왜 Monocole이나 Scalaz를 사용하지 않는 것이 좋을까요? – Mikesname

답변

5

재생에는 형식 조합 및 이기종 목록 (shapeless)이 포함되지 않습니다.

재생에는 자동 리소스 관리 (scala-arm)가 포함되지 않습니다.

재생 렌즈 (Monocle 또는 scalaz)는 포함되어 있지 않습니다.

MVC 웹 프레임 워크이며 문제 공간으로 제한됩니다. 그러나 이러한 라이브러리 중 하나는 Play 프로젝트에 쉽게 추가 할 수 있습니다. Play는 SBT를 사용하므로 build.sbt/Build.scala의 libraryDependencies에 적절하게 추가하면됩니다.

+0

제 생각에'employee.copy (surname = "Smith")'를 할 수 있다면 왜 객체의 더 깊은 부분도 없습니까? 우리는 Play 프레임 워크로 더 깊은 JSON 접근자를 사용할 수 있습니다. 왜 물건도 없습니까? 나는 그것이 포함을 보증 할만큼 충분히 표준적인 것이라고 생각했다. – bjfletcher

+1

@bjfletcher에는 웹 프레임 워크 *에 속하는 데 충분한 이유가 있어야합니다. "X가 Play 프레임 워크에없는 이유는 무엇입니까?" 당신이하고있는 강력한 웹 관련 일을 설명하지 않고, Play가 그 일을하는 것이 왜 더 나은지, 당신을 아주 멀리 할 수는 없을 것입니다. JSON 예제는 분명히 매우 webby이기 때문에 가장 가까운 예제입니다. 나는 이미 그것을 할 수있는 방법이 있다고 생각합니다. –