Est-il possible d'imposer la taille d'un Vector
transmis à une méthode au moment de la compilation ? Je souhaite modéliser un espace euclidien à n dimensions à l'aide d'une collection de points dans l'espace qui ressemble à quelque chose comme ceci (c'est ce que j'ai maintenant) :
case class EuclideanPoint(coordinates: Vector[Double]) {
def distanceTo(desination: EuclieanPoint): Double = ???
}
Si j'ai une coordonnée qui est créée via EuclideanPoint(Vector(1, 0, 0))
il s'agit d'un point euclidien en 3D. Compte tenu de cela, je veux m'assurer que le point de destination transmis lors d'un appel à distanceTo
est de la même dimension.
Je sais que je peux le faire en utilisant Tuple1
a Tuple22
mais je veux représenter de nombreux espaces géométriques différents et j'écrirais 22 classes pour chaque espace si je le faisais avec Tuple
existe-t-il une meilleure façon de procéder ?