我想实现一个包装类,它有不同的可用方法,具体取决于它包装的类型。
我有这样的想法:
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 类型系统中甚至可能吗?任何实现类似结果的类型安全模式(中缀符号在这里很重要)将不胜感激。