微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Scala 3 中声明和传递参数给隐式参数?

如何解决如何在 Scala 3 中声明和传递参数给隐式参数?

我在 Scala 2 中有这段代码

val number = 20

def double(implicit y:Int)={
  y*2
}

def count(implicit x:Int)={
  double
}

object HelloWorld {
  def main(args: Array[String]): Unit = {
    println(count(number)) // res: 40
  }
}

这里 x 函数count 参数被注释为 implicit,因此它可以隐式传递到 double 函数中。我如何在 Scala 3 中使用 given-using/summon 执行此操作?

解决方法

相关文档部分是 Relationship with Scala 2 Implicits - using clauses,其中解释了

必须写入 using 子句的参数的显式参数 使用 (using ...),镜像定义语法。

所以定义

def double(using y: Int) = y*2
def count(using x: Int) = double

可以这样应用

count(using number)

请注意,same 关键字 using 在概念上是如何既表达定义站点的“要求”概念又表达调用站点的“提供”概念的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。