gpt4 book ai didi

scala - trait 中的隐式 ExecutionContext

转载 作者:行者123 更新时间:2023-12-01 05:12:05 24 4
gpt4 key购买 nike

我希望将隐式 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在特性的声明中?

最佳答案

我似乎对以下代码没有任何问题,它与您的代码类似,但提供了完整的实现。不确定是什么问题。

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"
}

关于scala - trait 中的隐式 ExecutionContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24032991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com