2015-01-31 6 views
-1

Не имеет ли в инфраструктуре Play поддержка линз по умолчанию? Что-то вроде Monocole или с Scalaz. Возможно, есть рекомендуемые альтернативные подходы (вместе с их обоснованием), о которых я не знаю.Поддержка объективов в игровом каркасе

Сценарий: У меня есть неизменный, глубоко вложенный объект класса case, и я хочу скопировать его с измененным полем в объекте.

Я смотрю специально, чтобы сделать это очень просто, не нуждаясь в большом шаблоне, подобно тому, что делают библиотеки линз, такие как Monocole.

Я просто удивлен тем, что в Play Framework нет встроенной поддержки. Я что-то пропустил? Если нет, есть ли какой-либо известный план для этой поддержки?

+6

Линзы представляют собой несколько ортогональную заботу о веб-каркасе, не так ли? Я думаю, что философия в том, что вам очень рекомендуется смешивать и сопоставлять любые существующие библиотеки, поэтому почему бы просто не использовать Monocole или Scalaz? – Mikesname

ответ

5

Воспроизведение не включает союзы типов и разнородные списки (shapeless).

Воспроизведение не включает автоматическое управление ресурсами (scala-arm).

Воспроизведение не включает объективы (Monocle или scalaz).

Это веб-среда MVC и ограничивается этим проблемным пространством. Однако любую из этих библиотек легко добавить в проект Play. Play использует SBT, поэтому просто добавьте к libraryDependencies вашего build.sbt/Build.scala соответствующим образом.

+0

Моя мысль заключалась в том, что если мы сможем сделать 'employee.copy (surname =" Smith ")' из коробки, почему бы и не глубже части объекта? Мы могли бы сделать более глубокие аксессуры JSON из коробки с Play framework. Почему не объекты тоже? Я думал, что это достаточно стандартно, чтобы гарантировать включение. – bjfletcher

+1

@bjfletcher, должна быть достаточно веская причина, по которой он принадлежит * веб-каркасу *. Запрашивая «Почему X не в структуре Play?» не объясняя сильно связанную с веб-сайтом вещь, и почему это лучше, если Play делает это, не приведет вас к очень далеко. Пример JSON является самым близким к этому, поскольку он явно очень webby. Я думаю, что уже есть способ сделать это. –

Смежные вопросы