は、私が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ですScalaでorted?もしそうなら、なぜ、これを回避する簡単な方法がありますか?
このメソッドを 'apply'と呼ぶと' val p = Point(1,2) 'と書くことができます。 –
はい、それはケースクラスがそれを行う方法です。 –