如何定义特征以便我们使用具有上下文边界的类进行扩展?

时间:2014-10-02 14:16:56

标签: scala functional-programming

假设我希望能够:

trait MyTrait[T: Numeric] {
  val numeric = implicitly[Numeric[T]]
  import numeric.mkNumericOps
  // more code
}

然后用

延伸
class MyClass[T: Numeric] extends MyTrait[T] {
  // code
}

你老了" traits不能有带上下文界限的类型参数"。

是否存在语法上与此非常接近的东西,并做同样的事情?

1 个答案:

答案 0 :(得分:0)

像这样:

trait MyTrait[T] {
  val numeric: Numeric[T]
  import numeric.mkNumericOps
  // more code
}

class MyClass[T: Numeric] extends MyTrait[T] {
  val numeric = implicitly[Numeric[T]]
  // code
}