yoluyla değiştirme haritası. Ne yazık ki, yeni başlayanlar için öğrenme materyallerine çok az şey olduğunu öğrendim (vanilla Scala'da FP'nin temellerini biliyorum, Scalaz yok). Resmi öğretici, kolay örneklerden (ve/veya sonuçlarından) yoksundur ve oldukça karmaşık Scalaz kütüphanesinde karıştırır. Bir Haritaya erişim gibi önemsiz bir görevin ilk sayfada ele alınacağını varsayalım. Ben at
ve index
gördütüm bu fantezi boilerplate-az <code>@Lenses</code> ile iyi (benim noobish perspektiften) Ben lensler denemek istedim ve Monocle kütüphane gibiydi Monocle
@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)
, ancak hiçbir basit örnekler (applyOptional
ile sadece tuhaf [benim için sihirli] cevap klişe gerekli olan):
Ben şu pasajı var. Haritayı güncelleştirmek istiyorum - houses
Town
. sözdizimsel yanlış
(World.town ^|-> Town.houses ^|-> index((x, y)) ^|-> House.presentsDelivered)
.modify { _ + 1 }(world)
, ama ben (belirtilen x, y
koordinatlarda House
ait presentsDelivered
değiştirmek) ne yapmak istediğini açıkça düşünüyorum: Ben bu ruhu içinde bir şey çalışıyordu. Benim sorum haritaya erişmek için nasıl index
bölüm değiştirmek için?
Herhangi bir yardım, ipucu ya da çaylak dostu öğrenme materyalleri ipuçları açıktır.
import monocle.function.all.index
import monocle.std.map._
(
World.town ^|->
Town.houses ^|-?
index((0, 0)) ^|->
House.presentsDelivered
).modify(_ + 1)
Not ben hemen ^|-?
ile endeks önceki ^|->
yerini ettik:
Belgelerin yetersizliğinden dolayı üzgünüz, bunun üzerinde çalışıyoruz. Monocle gitter'e kadar tereddüt etmekten çekinmeyin, burada veya github hakkında soru sorun. –