在Scala中使用隐式参数和多参数



有一些代码:

def sum1(x: Int)(y: Int) = x + y

def sum2(x: Int)(implicit y:Int) = x + y

你能给我解释一下哪种情况下会用到sum1和sum2吗?

谢谢!

要调用带有隐式形参的函数,必须在隐式作用域中恰好存在一个与隐式形参类型匹配的值。

下面是一些非常简单的例子:

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文档

相关内容

  • 没有找到相关文章

最新更新