包私有伴随对象中的隐式值/转换

2024-02-07

我试图找到与此相关的任何信息(文档、规格等),但这个主题似乎很难用谷歌搜索。我要求提供有关以下内容为何有效的参考资料。

trait Foo[A]

package bar {
  trait Bar
  private[bar] object Bar {
    implicit val b: Foo[Bar] = null
  }
}

import bar._
def foo[A: Foo](a: A): Foo[A] = implicitly[Foo[A]]

foo(new Bar) // compiles

不知何故,编译器能够找到类型的隐式值Foo[Bar]在包私有伴随对象中Bar. Why?

为了澄清我的问题。一切都发生了变化,我们改变了伴随对象,如下所示(隐式值是私有的,但封闭对象不是)。上面的代码不能用这个编译Bar.

package bar {
  trait Bar
  object Bar {
    private implicit val b: Foo[Bar] = null
  }
}

是否有一些文档/规范可以解释为什么会发生这种情况?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

包私有伴随对象中的隐式值/转换 的相关文章

随机推荐