Volevo provare gli obiettivi e la libreria Monocle sembrava (dal mio punto di vista noobish) buona con tutti quei fantasiosi piatti senza @Lenses
. Sfortunatamente ho scoperto che ci sono pochi materiali non di apprendimento per principianti (conosco le basi del FP in Vanilla Scala, senza Scalaz). Il tutorial ufficiale manca di semplici esempi (e/o dei loro risultati) e si mescola in una libreria Scalaz piuttosto complessa. Si potrebbe supporre che un'attività così banale come l'accesso a una mappa sia coperta da una prima pagina.Modifica mappa tramite Monocle
devo seguente frammento:
@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)
ho visto at
e index
, ma non semplici esempi (solo qualche strano [magici per me] Rispondere con applyOptional
che ha richiesto boilerplate). Voglio aggiornare la mappa - houses
in Town
. Stavo cercando qualcosa in questo spirito:
(World.town ^|-> Town.houses ^|-> index((x, y)) ^|-> House.presentsDelivered)
.modify { _ + 1 }(world)
Quale è sintatticamente sbagliato, ma credo che sia evidente quello che volevo fare (modifica presentsDelivered
di House
a specifici x, y
coordinate). Quindi la mia domanda è, come modificare la parte index
per accedere alla mappa?
Qualsiasi suggerimento sui materiali didattici di aiuto, indizio o noob-friendly è benvenuto.
Siamo spiacenti per la mancanza di documentazione, stiamo lentamente lavorando su di esso. Per favore non esitare a fare un salto a monocle gitter, fare domande qui o su github. –