当 this 绑定到 scala 中的包时,Private[this] 与 private[package] 有什么区别?

What is the difference between Private[this] vs private[package] when this bind to the package in scala?

当 this 绑定到包与 Private[PackageName]

时,我很难理解 Private[this]

例如

这很好用:

package scopeA {

    private[scopeA] class PrivateClass1

    class PrivateClass2 extends PrivateClass1
}

但这并不

package scopeA {

    private[this] class PrivateClass1

    class PrivateClass2 extends PrivateClass1 //private class PrivateClass1 escapes its defining scope as part of type scopeA.PrivateClass1
}

但是如果我这样修改第二个:

package scopeA {

    private[this] class PrivateClass1

    private class PrivateClass2 extends PrivateClass1
}

private[this]private,在最后一个场景中效果相同。

我能看出其中的区别,但我无法用合适的词表达出来。因此我的问题是,当 this 绑定到一个包时, Private[this] 的含义是什么?它与 private[PackageName] 有什么不同,两者之间的确切区别是什么?

有些关于转义范围的内容我不确定是否遵循,为什么包名可以,但这个不行?

this指的是(可能的)包对象

package com {

  package object example {

    implicitly[this.type =:= com.example.`package`.type]

  }

}

According to the Scala Language Specification, packages are AnyRef values and have types. How does this make sense?