Scala - принудительный размер вектора во время компиляции
Возможно ли обеспечить соблюдение размераVector
передается в метод во время компиляции? Я хочу смоделировать n-мерное евклидово пространство, используя набор точек в пространстве, который выглядит примерно так (вот что у меня сейчас):
case class EuclideanPoint(coordinates: Vector[Double]) {
def distanceTo(desination: EuclieanPoint): Double = ???
}
Если у меня есть координата, которая создается с помощьюEuclideanPoint(Vector(1, 0, 0))
Это трехмерная евклидова точка. Учитывая это, я хочу убедиться, что пункт назначения передан в вызовеdistanceTo
имеет такое же измерение.
Я знаю, что могу сделать это с помощьюTuple1
вTuple22
, но я хочу представить много разных геометрических пространств, и я бы написал 22 класса для каждого пространства, если бы я сделал это сTuple
s - есть ли лучший способ?