我试图指定val
常量仅对一个对象可见:
object Config {
private[my.pack.MyObject] val Some = Option("String")
}
// in package my.pack
object MyObject {
val Other = Config.Some
}
编译时我收到错误:
[error] C:\path\Config.scala:17: ']' expected but '.' found.
[error] private[my.pack.MyObject] val Some = Option("String")
[error] ^
有什么问题?当我读到访问限定符时,它们可以是类或对象,而不是包,我错了吗?
答案 0 :(得分:6)
来自the Scala Language specification, section 5.2.1:
私有修饰符可以限定,标识符为 C (例如
private[C]
),必须表示包含定义的类或包> STRONG>。标有此类修饰符的成员只能分别从包 C 中的代码访问,或者只能从类 C 及其配套模块中的代码访问。
(大胆的我 - 注意“类或包”也承认“对象”,不确定这是规范中的标准语言,还是规范中的错误)
因此,您的示例无法编译,因为my.pack.MyObject
不是封闭 val Some
声明。