Скажем, я определяю простой 2D точечный класс в Scala и хочу иметь возможность создавать его с различными типами:
class Point(x:Float, y:Float) {
this(x:Double, y:Double) = this(x.toFloat, y.toFloat)
this(x:Int, y:Int) = this(x.toFloat, y.toFloat)
// etc...
}
Я хочу свести это к минимуму, используя шаблон, например:
class Point(x:Float, y:Float) {
this[T](x:T, y:T) = this(x.toFloat, y.toFloat)
}
Я знаю, что это все равно не сработает, поскольку T может быть типом, для которого toFloat не определен, но я получаю ошибку компилятора:
здесь нельзя указывать параметры типа
Это просто не поддерживается в Scala? Если так, то почему, и есть ли простой способ обойти это?