Scala - принудительный размер вектора во время компиляции

Возможно ли обеспечить соблюдение размераVector передается в метод во время компиляции? Я хочу смоделировать n-мерное евклидово пространство, используя набор точек в пространстве, который выглядит примерно так (вот что у меня сейчас):

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

Если у меня есть координата, которая создается с помощьюEuclideanPoint(Vector(1, 0, 0))Это трехмерная евклидова точка. Учитывая это, я хочу убедиться, что пункт назначения передан в вызовеdistanceTo имеет такое же измерение.

Я знаю, что могу сделать это с помощьюTuple1 вTuple22, но я хочу представить много разных геометрических пространств, и я бы написал 22 класса для каждого пространства, если бы я сделал это сTuples - есть ли лучший способ?

Ответы на вопрос(2)

Ваш ответ на вопрос