Scala - Wymuszanie rozmiaru Vector w czasie kompilacji

Czy możliwe jest wymuszenie rozmiaru aVector przekazany do metody w czasie kompilacji? Chcę modelować n-wymiarową przestrzeń euklidesową za pomocą zbioru punktów w przestrzeni, która wygląda mniej więcej tak (mam to teraz):

case class EuclideanPoint(coordinates: Vector[Double]) {
  def distanceTo(desination: EuclieanPoint): Double = ???
}

Jeśli mam współrzędną utworzoną przezEuclideanPoint(Vector(1, 0, 0)), jest to punkt euklidesowy 3D. Biorąc to pod uwagę, chcę się upewnić, że punkt docelowy minął w wezwaniudistanceTo ma ten sam wymiar.

Wiem, że mogę to zrobić za pomocąTuple1 doTuple22, ale chcę reprezentować wiele różnych przestrzeni geometrycznych i napisałbym 22 klasy dla każdej przestrzeni, gdybym to zrobiłTuples - czy jest lepszy sposób?

questionAnswers(2)

yourAnswerToTheQuestion