Scala - Reforçando o tamanho do vetor no tempo de compilação
É possível impor o tamanho de umVector
passou para um método em tempo de compilação? Eu quero modelar um espaço Euclidiano n-dimensional usando uma coleção de pontos no espaço que se parece com isso (isto é o que eu tenho agora):
case class EuclideanPoint(coordinates: Vector[Double]) {
def distanceTo(desination: EuclieanPoint): Double = ???
}
Se eu tiver uma coordenada criada por meio deEuclideanPoint(Vector(1, 0, 0))
, é um ponto 3D euclidiano. Assim, quero ter certeza de que o ponto de destino passou em uma chamada paradistanceTo
é da mesma dimensão.
Eu sei que posso fazer isso usandoTuple1
paraTuple22
, mas eu quero representar muitos espaços geométricos diferentes e eu estaria escrevendo 22 classes para cada espaço se eu fizesse isso comTuple
s - há uma maneira melhor?