Скажем, я определяю простой 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? Если да, то почему, и есть ли простой способ обойти это?