如何解决如何在 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 举报,一经查实,本站将立刻删除。