我想尝试镜头,Monocle 库似乎(从我的菜鸟的角度来看)与所有那些花哨的无样板文件都很好@Lenses
。不幸的是,我发现对于初学者来说几乎没有学习材料(我知道香草 Scala 中的 FP 基础知识,没有 Scalaz)。官方教程缺乏简单的示例(和/或其结果),并且混合了相当复杂的 Scalaz 库。有人会假设像访问地图这样的琐碎任务将在第一页上介绍。
我有以下片段:
@Lenses case class House(presentsDelivered: Int)
type Houses = Map[(Int, Int), House]
@Lenses case class Town(houses: Houses)
@Lenses case class Santa(x: Int, y: Int)
@Lenses case class World(santa: Santa, town: Town)
我看到了at
and index
,但没有简单的例子(只是一些奇怪的 [我的魔法] 答案applyOptional
需要样板文件)。我想更新地图houses
。Town
我本着这种精神尝试了一些事情:
(World.town ^|-> Town.houses ^|-> index((x, y)) ^|-> House.presentsDelivered)
.modify { _ + 1 }(world)
这在语法上是错误的,但我认为我想做的事情很明显(presentsDelivered
在House
指定x, y
坐标处修改)。所以我的问题是,如何修改index
部分以访问地图?
欢迎任何帮助、线索或对新手友好的学习材料提示。