我有一些代码:
def sum1(x: Int)(y: Int) = x + y
和
def sum2(x: Int)(implicit y:Int) = x + y
请您解释一下哪个案例会使用sum1和sum2?
谢谢!
答案 0 :(得分:0)
为了使用隐式参数调用函数,在隐式作用域中必须只存在一个类型与隐式参数匹配的值。
以下是一些非常简单的例子:
def implicitSum(n: Int)(implicit m: Int): Int = n + m
val a = {
implicit val a = 2
implicitSum(1) // equals 3
}
val b = {
implicit val b = 3
implicitSum(1) // equals 4
}
val c = {
implicit val c = 4
implicitSum(1)(1) // equals 2: explicit parameter has higher priority
}
val d = {
implicitSum(1) // does not compile, no implicit (or explicit) parameter
}
您可以从示例中了解到,隐式解析是在编译时完成的。
要了解有关该主题的更多信息(并提供一些更有趣和有意义的示例),建议您阅读Scala文档的this page。