说我定义Scala中的一个简单的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一个类型,但是编译器错误我得到的是:
no type parameters allowed here
这只是unsupp在斯卡拉砸了吗?如果是这样,为什么,还有什么简单的方法来解决这个问题?
如果你调用这个方法'apply',那么你可以写'val p = Point(1,2)',不是? –
是的,这就是案例分类的做法。 –