Ich habe gehört, dass Scala pfadabhängige Typen hat. Es hat etwas mit Innenklassen zu tun, aber was bedeutet das eigentlich und warum kümmert es mich?
scala
type-systems
path-dependent-type
oxbow_lakes
quelle
quelle
Antworten:
Mein Lieblingsbeispiel:
Die Art von
Coordinate
hängt also von der Instanz ab,Board
von der es instanziiert wurde. Es gibt alle möglichen Dinge, die damit erreicht werden können und eine Art Typensicherheit bieten, die von Werten und nicht nur von Typen abhängt.Dies mag nach abhängigen Typen klingen, ist jedoch eingeschränkter. Zum Beispiel ist der Typ von
occupied
abhängig vom Wert vonBoard
. Oben funktioniert die letzte Zeile nicht, weil der Typ vonc2
istb2.Coordinate
, währendoccupied
der Typ istSet[b1.Coordinate]
. Beachten Sie, dass ein anderer Bezeichner mit demselben Typ von verwendet werden kannb1
, sodass dem Typ nicht der Bezeichner zugeordnetb1
ist. Zum Beispiel funktioniert Folgendes:quelle