Scala - Erzwingen der Größe des Vektors zur Kompilierungszeit
Ist es möglich, die Größe von a zu erzwingen?Vector
bei der Kompilierung an eine Methode übergeben? Ich möchte einen n-dimensionalen euklidischen Raum mit einer Punktesammlung im Raum modellieren, die ungefähr so aussieht (das habe ich jetzt):
case class EuclideanPoint(coordinates: Vector[Double]) {
def distanceTo(desination: EuclieanPoint): Double = ???
}
Wenn ich eine Koordinate habe, die über erstellt wirdEuclideanPoint(Vector(1, 0, 0))
Es ist ein euklidischer 3D-Punkt. Vor diesem Hintergrund möchte ich sicherstellen, dass der Zielpunkt bei einem Anruf an übergeben wirddistanceTo
ist von der gleichen Dimension.
Ich weiß, dass ich das mit tun kannTuple1
zuTuple22
, aber ich möchte viele verschiedene geometrische Räume darstellen und würde 22 Klassen für jeden Raum schreiben, wenn ich es mit täteTuple
s - gibt es einen besseren weg?