2017-02-26 38 views
0

我有標記爲使用專用包中的類REPL

package com.salil.mypackage 

private [mypackage] MyClass{ 

} 

不過幾類,我想在斯卡拉REPL使用它們。我試着用貼:-raw有類似的代碼:

package com.salil.mypackage { 

    val my = new MyClass() 
    } 

但失敗:

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

任何方式在REPL訪問這些類?

回答

1

您可以在REPL中使用它們使用:paste -raw,而不會出現問題,正如您嘗試過的那樣。你的問題是你的Scala是無效的。

這個定義是無效的語法,你缺少的class聲明:

private [mypackage] MyClass 

下也是無效的語法,因爲你不能把瓦爾斯在包的根。但是,如果您使用package object,則您可以使用

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

scala> com.salil.mypackage.my 
res12: com.salil.mypackage.MyClass = [email protected] 
+0

這適用於Scala 2.11,但不適用於scala 2.10。無論如何,使其工作? –

+0

@SalilSurendran No,':paste-raw'在2.11中加入。 –