【发布时间】:2013-09-03 22:52:42
【问题描述】:
我想要一个高阶函数,它接受一个接受特定隐式参数的函数。
更准确地说,我正在尝试创建一个函数,该函数采用依赖于隐式上下文的Future 创建方法并返回一个不依赖于上下文的方法。
更具体地说,假设我有这样的事情:
def foo(a: Int)(implicit ctx: ExecutionContext): Future[Float] = future { somelongBar... }
我想有这样的方法:
def provideCtx[A](func: ExecutionContext => A): A = {
val ctx = setupCtx
func(ctx)
}
但如果我调用provideCtx(foo),编译器会抱怨缺少隐式执行上下文。
我正在处理 ExecutionContext 的事实并不是很重要。我想找到的是如何编写参数类型以接受具有特定类型的隐式参数的函数。我知道隐式部分是一个 curryed 参数,所以实际上我有一个像这样的函数:ExecutionContext => Int => Future[Float],我很确定在运行时,jvm 不知道 ExecutionContext 是隐式的,但我可以不要让编译器明白这一点。
【问题讨论】:
标签: scala implicit currying higher-order-functions