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äteTuples - gibt es einen besseren weg?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage