0
在scala抽象类中,如果要定义上下文绑定,可以简单地使用,例如, [T:ClassTag]在参数,但是这是不可能的特质:用于定义特征中scala上下文绑定的简写
trait Foo[T: ClassTag]
Error:(11, 35) traits cannot have type parameters with context bounds `: ...' nor view bounds `<% ...'
trait Foo[T: ClassTag]
^
如果你定义:
trait Foo[T] {
implicit def ctg: ClassTag[T] = implicitly[ClassTag[T]]
}
object Bar extends Foo[Int]
那么任何试图读取里面酒吧CTG将触发的StackOverflowError,作为隐参数变成尾递归。
那么允许ctg被定义在一个自动将子类暴露给上下文绑定的特征中的最佳方式是什么?
谢谢。很遗憾不知道它不被支持,希望自动脱糖可以成为未来的一个功能 – tribbloid