用于提供来自高阶函数参数的给定的正确Scala 3语法

z9smfwbn  于 2022-11-09  发布在  Scala
关注(0)|答案(1)|浏览(132)

在Scala 2中,我可以编写如下内容:

// a function that needs an implicit context
def funcWithCtx(arg1: String)(implicit ctx: Context) = ???

myObj.doSomething { implicit ctx => // mark argument as the implicit context
  funcWithCtx("arg1")
}

这种语法在Scala3中有效,但我认为implicit正在被弃用,而使用的是given`using?我尝试用given替换implicit`,但编译器不喜欢这样。

myObj.doSomething { given x => // this fails!
  ...
}

这里是否仍然需要implicit关键字?

vof42yt1

vof42yt11#

我想,正确的说法是

myObj.doSomething { ctx =>
  given Context = ctx
  ...
}

myObj.doSomething { case ctx@given Context =>
  ...
}

Allow given bindings in patterns

相关问题