Słyszałem, że Scala ma typy zależne od ścieżki. To ma coś wspólnego z klasami wewnętrznymi, ale co to właściwie oznacza i dlaczego mnie to obchodzi?
scala
type-systems
path-dependent-type
oxbow_lakes
źródło
źródło
Odpowiedzi:
Mój ulubiony przykład:
Tak więc typ
Coordinate
jest zależny od instancji,Board
z której została utworzona. Jest wiele rzeczy, które można w ten sposób osiągnąć, dając rodzaj bezpieczeństwa zależnego od wartości, a nie samych typów.Może to brzmieć jak typy zależne, ale jest bardziej ograniczone. Na przykład typ
occupied
zależy od wartościBoard
. Powyżej ostatnia linia nie działa, ponieważ typc2
tob2.Coordinate
, aoccupied
typ toSet[b1.Coordinate]
. Należy zauważyć, że można użyć innego identyfikatora tego samego typub1
, więc nie jest to identyfikatorb1
powiązany z typem. Na przykład działa to:źródło