标签: monocle

使用Monocle Lenses使用另一个属性的值修改属性

我有以下型号

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)
Run Code Online (Sandbox Code Playgroud)

我想要实现的是通过更新pollChoices列表中每个元素的所有百分比属性来更新Poll的pollChoices属性.我的问题是,新的百分比值是基于价值的属性PollChoicetotalValueCount中的投票.

到目前为止我所做的是:

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)
Run Code Online (Sandbox Code Playgroud)

但是这样我只能访问我在修改步骤中更新的元素的百分比属性,我也需要该值.

我假设我需要使用Traversable来进行这种修改,但我不确定如何.谢谢.

scala lenses monocle

8
推荐指数
1
解决办法
105
查看次数

Scala Monocle - 在 E 中找不到方法 id

类定义如下所示:

abstract class EntityWithIdHelper[E <: { def id: Int }] {
  def idLens: Lens[E, Int] = GenLens[E](_.id)
  ...
Run Code Online (Sandbox Code Playgroud)

你如何避免这个问题 - Cannot find method id in E?有什么解决方法吗?

scala monocle

5
推荐指数
1
解决办法
201
查看次数

标签 统计

monocle ×2

scala ×2

lenses ×1