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łTuple
s - czy jest lepszy sposób?