У меня есть следующая модельИзменение атрибута с моноклем Объективы с использованием значения другого атрибута
import monocle.macros.Lenses
import monocle.function.all._
import monocle.std.list._
@Lenses("_") case class Poll(pollChoices: List[PollChoice], totalVoteCount: Int)
@Lenses("_") case class PollChoice(id: Int, value: Int, percentage: Int)
То, что я пытаюсь добиться, чтобы обновить атрибут pollChoices опроса, обновив все процентные атрибуты каждый элемент в списке pollChoices. Моя проблема заключается в том, что новые процентные значения основаны на значения атрибута PollChoice и totalValueCount из Poll.
То, что я сделал до сих пор:
val poll = Poll(List(PollChoice(1,3,0), PollChoice(2,5,0)), 8)
(Poll._pollChoices composeTraversal each composeLens PollChoice._percentage)
.modify(oldPercentage => oldPercentage + 1)(poll)
Но этот путь я могу получить доступ только процент атрибута элемента Я обновляю на этапе модификации, мне также нужно значение.
Я предполагаю, что мне понадобится использовать Traversable, чтобы сделать такую модификацию, но я не уверен, как это сделать. Спасибо.
Спасибо, то отлично для моего случая использования! –