Chciałem wypróbować soczewki, a biblioteka Monocle wydawała się (z mojej nieobjętej oczyma) dobrą z wszystkimi tymi fantazyjnymi, beznarzędziowymi standardami, @Lenses
. Niestety dowiedziałem się, że dla początkujących jest niewiele materiałów do nauki (znam podstawy FP w waniliowej scali, nie ma Scalaza). Oficjalny tutorial nie zawiera łatwych przykładów (i/lub ich wyników) i miesza się w dość skomplikowanej bibliotece Scalaz. Można by przypuszczać, że takie trywialne zadanie, jak dostęp do mapy, zostanie omówione na pierwszej stronie.Modyfikacja mapy za pomocą Monocle
Mam następujący fragment:
@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)
widziałem at
i index
, ale ma prostych przykładów (tylko niektóre dziwne [dla mnie] magiczne odpowiedzieć applyOptional
których wymagane boilerplate). Chcę zaktualizować mapę - houses
w Town
. Próbowałam coś w tym duchu:
(World.town ^|-> Town.houses ^|-> index((x, y)) ^|-> House.presentsDelivered)
.modify { _ + 1 }(world)
Która jest składniowo źle, ale myślę, że jest oczywiste, co chciałem zrobić (modyfikować presentsDelivered
z House
w określonych x, y
współrzędnych). Moje pytanie brzmi: jak zmodyfikować część index
, aby uzyskać dostęp do mapy?
Każda pomoc, wskazówki czy wskazówki dotyczące materiałów do nauki są mile widziane.
Przepraszamy za brak dokumentacji, powoli nad nią pracujemy. Proszę nie wahaj się wyskoczyć do monoklowej gitter, zadaj pytanie tutaj lub na github. –