我希望将隐式ExecutionContext传递给部分实现的特征。在代码示例中:
import scala.concurrent.Future
trait Processor[T,R] {
def process(op:T): Future[R] = {
//Do something to get stuff from abstract methods
Future {
//Do something that returns type R
}
}
}这将需要一个ExecutionContext,因此我将声明更改为:
import scala.concurrent.Future
import scala.concurrent.ExecutionContext
trait Processor[T,R] {
def process(op:T)(implicit executor: ExecutionContext): Future[R] = {
//Do something to get stuff from abstract methods
Future {
//Do something that returns type R
}
}
}但是当我尝试像这样扩展特征时:
import scala.concurrent.ExecutionContext.Implicits.global
class StringProcessor extends Processor[String,String] {
//Bla bla bla
}编译器告诉我方法过程没有实现,我的类应该是抽象的。
我如何才能确保我的构造工作,而不必在特征的声明中放入implicit val xc:ExecutionContext?
发布于 2014-06-04 20:18:33
下面的代码似乎没有任何问题,它与您的代码相似,但提供了完整的实现。不确定问题是什么。
import scala.concurrent.Future
import scala.concurrent.ExecutionContext
trait Processor[T,R] {
def process(op:T)(implicit executor: ExecutionContext): Future[R] = {
//Do something to get stuff from abstract methods
Future {
getR
}
}
def getR:R
}
class StringProcessor extends Processor[String,String] {
def getR = "foo"
}https://stackoverflow.com/questions/24032991
复制相似问题