首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐式参数值本身是否是隐式值?

隐式参数值本身是否是隐式值?
EN

Stack Overflow用户
提问于 2016-09-20 13:54:12
回答 1查看 73关注 0票数 1

要解释标题问题,是否在函数的范围内将隐参数隐式为函数的隐式值?

下面是一个小小的测试:

代码语言:javascript
复制
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()
  }

}

现在运行它:

代码语言:javascript
复制
  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),没有看到任何提到这个事实,如果我是正确的理解事物。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-20 14:02:17

是的,内嵌参数可以通过在作用域中匹配隐式类型的其他函数访问。

取自http://docs.scala-lang.org/tutorials/tour/implicit-parameters.html

有资格传递给隐式参数的实际参数可分为两类:

  • 首先,所有符合条件的标识符x都可以在没有前缀的方法调用点上访问,并且表示隐式定义或隐式参数。
  • 第二,合格的也是隐式参数类型的伙伴模块的所有成员,这些模块被标记为隐式。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39596034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档