Scala - Hacer cumplir el tamaño de Vector en tiempo de compilación
¿Es posible imponer el tamaño de unaVector
Pasado a un método en tiempo de compilación? Quiero modelar un espacio euclidiano n-dimensional utilizando una colección de puntos en el espacio que se parece a esto (esto es lo que tengo ahora):
case class EuclideanPoint(coordinates: Vector[Double]) {
def distanceTo(desination: EuclieanPoint): Double = ???
}
Si tengo una coordenada que se crea a través deEuclideanPoint(Vector(1, 0, 0))
, es un punto euclidiano 3D. Dado esto, quiero asegurarme de que el punto de destino pasado en una llamada adistanceTo
Es de la misma dimensión.
Sé que puedo hacer esto usandoTuple1
aTuple22
, pero quiero representar muchos espacios geométricos diferentes y estaría escribiendo 22 clases para cada espacio si lo hiciera conTuple
s - hay una manera mejor?