在Scala repl中使用私有包类

时间:2017-02-26 08:08:12

标签: scala

我有几个标记为

的类
package com.salil.mypackage

private [mypackage] MyClass{

}

但是,我想在scala repl中使用它们。我尝试使用paste:-raw代码如下:

package com.salil.mypackage {

     val my = new MyClass()
    }

但是失败了:

<console>:1: error: illegal start of definition

在repl中访问这些类的任何方法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用REPL中的:paste -raw毫无问题地使用它们,就像您尝试过的那样。您的问题是您的Scala无效。

这个定义是无效的语法,你缺少class声明:

private [mypackage] MyClass

以下也是无效的语法,因为您不能将val放在包的根目录中。如果您使用package object可以使其正常工作。

package com.salil
package object mypackage {
    val my = new MyClass()
}

scala> com.salil.mypackage.my
res12: com.salil.mypackage.MyClass = com.salil.mypackage.MyClass@56eae567