遍历可返回地图的scalaz镜头

时间:2018-08-06 13:05:43

标签: scala state scalaz lens

我正在努力将状态,镜头和地图结合在一起。

给出以下案例类别

  case class Item(id: Int, text: String)
  case class Container(items: Map[Int, Item])
  case class Parent(container: Container)

及以下镜片

  val parentContainer = Lens.lensu[Parent, Container](
    (parent, newValue) => parent.copy(container = newValue),
    _.container)

  val itemText = Lens.lensu[Item, String](
    (item, newValue) => item.copy(text = newValue),
    _.text)

还有修改项目的功能

  val toUpper : State[Item,_] = for {
    _ <- itemText.st.map(_.toUpperCase())
  } yield()

我需要映射所有容器项目,并使用 toUpper 函数

对其进行修改
val toUpperAll : State[Parent,_] = for {
      _ <- parentContainer ... map over items and call toUpper ??
  } yield()

0 个答案:

没有答案