ラップするタイプに応じて、さまざまなメソッドを使用できるラッパー クラスを実装したいと考えています。
私はこのようなことを念頭に置いています:
case class Wrapper[A](val : A)
case class Wrapper[A : Numeric](val a : A) {
def add[A](a : A) = new Wrapper(this.a + a)
}
val a = new Wrapper(1.0)
val b = new Wrapper(2.0)
val c = a add b
val d = new Wrapper(new Object)
val e = a add d // Compile Error!
渡されたパラメーターをType Class -Pattern で制限できることは既にわかっていますが、タイプが制限されていない場合、これは明らかにエラーにつながる可能性がthis
あります。
これはscala型システムでも可能ですか? 同様の結果を達成するための型安全なパターン (ここでは中置記法が重要です) を大歓迎します。