說我定義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)',不是? –
是的,這就是案例分類的做法。 –