у меня следующая модель
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. Моя проблема в том, что новые процентные значения основаны на атрибуте value в 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)
Но таким образом я могу получить доступ только к атрибуту percentage элемента, который я обновляю на этапе изменения, мне также нужно значение.
Я предполагаю, что мне нужно будет использовать Traversable для такой модификации, но я не уверен, как это сделать. Спасибо.