加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 特征中的隐式ExecutionContext

发布时间:2020-12-16 08:43:47 所属栏目:安全 来源:网络整理
导读:我想将一个隐式ExecutionContext传递给部分实现的特征. 在代码示例中: import scala.concurrent.Futuretrait Processor[T,R] { def process(op:T): Future[R] = { //Do something to get stuff from abstract methods Future { //Do something that returns
我想将一个隐式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
}

编译器告诉我方法过程没有实现,我的类应该是抽象的.

如何确保我的构造工作而不必在特征的声明中放入隐式的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"
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读