【发布时间】:2016-09-20 13:54:12
【问题描述】:
套用标题问题,函数的隐含参数是函数范围内的隐含值吗?
这是一个小测试:
object ImplicitTest{
case class Foo()
def myOtherFun()(implicit myfoo: Foo) = {
val grabImpFoo = implicitly[Foo]
println(myfoo.toString + " from myOtherFun")
}
}
import ImplicitTest._
class ImplicitTest {
def myFun()(implicit myfoo: Foo) = {
println(myfoo.toString)
myOtherFun()
}
}
现在运行它:
implicit val foo = Foo()
val it = new ImplicitTest()
it.myFun()
这似乎向我证明了隐式参数本身是隐式的,因为myOtherFun 可以找到一个隐式参数,我有一段时间不相信这种情况!我想这有利有弊,但我只是来了解事实的;我查看了http://docs.scala-lang.org/tutorials/FAQ/finding-implicits.html(基于Passing scala.math.Integral as implicit parameter)并没有看到任何提及这个事实,如果我理解正确的话。
【问题讨论】:
-
你的问题到底是什么?
-
标题,但要解释一下,是函数范围内函数隐含值的隐含参数吗?