访问修饰符的Scala参数?
Posted
技术标签:
【中文标题】访问修饰符的Scala参数?【英文标题】:Scala parameters for access modifiers? 【发布时间】:2014-12-27 03:57:49 【问题描述】:有什么区别
class Test
private[this] val foo = 0
对
class Test
private val foo = 0
[]
里面都有什么?另外,当我想查看它的规格时,我应该搜索什么?我尝试在谷歌上搜索“scala 访问修饰符参数/参数化 scala 访问修饰符”的各种组合,但没有任何结果。
【问题讨论】:
【参考方案1】:第一个是私有的实例类,第二个是类。如果您使用第二个版本,您可以从 Test 类的另一个实例访问(它对 equals
方法或类似方法很有用)。
【讨论】:
谢谢!你能指出我记录在案的地方吗? 参见artima.com/pins1ed/packages-and-imports.html的“保护范围”【参考方案2】:当我想查看它的规格时,我应该搜索什么?
在The Scala Language Specification 中,它被定义为“访问修饰符”和“访问限定符”(参见第 5.2 节中的 BNF)。
有什么区别
...
[] 里面可以放什么?
你可以把类名、包名或this
放在那里。以下是语言规范中的相关引用,解释了这一点(有关更多详细信息,请参阅第 5.2 节):
修饰符可以用一个标识符 C(例如 private[C])来限定,该标识符必须 表示包含定义的类或包。成员标记为 这样的修饰符只能从包内的代码中分别访问 C 或仅来自 C 类及其配套模块中的代码(第 5.4 节)。
另一种形式的资格是私有的[this]。一个成员 M 标记 使用此修饰符称为对象保护;它只能从 在定义它的对象内。也就是说,选择 p.M 仅当前缀是 this 或 O.this 时才合法,对于包含引用的某些类 O。在 此外,不合格私人的限制适用。
【讨论】:
以上是关于访问修饰符的Scala参数?的主要内容,如果未能解决你的问题,请参考以下文章