如何将包导入Scala REPL?

时间:2017-12-18 18:55:35

标签: scala sbt read-eval-print-loop

如何将包导入Scala的REPL? 我试图导入这个名为funsets的包,它有一个名为“FunSets”的对象。 我尝试了import funsets._import funsets._;等的几种变体,但它仍未导入包中的函数和对象。

3 个答案:

答案 0 :(得分:2)

在启动repl时,您还需要使用-cp <jar files>参数将相应的jar添加到类路径中。或者,您可以使用repl中的:require <jar file>指令在您已经开始会话后加载jar。

答案 1 :(得分:2)

一种方法是编译“scala类”并将其放在classpath中。

示例,

1)假设您有一个课程funsets.FunSets.scala

package funsets                                                                                        

object FunSets {                                                                                       

  def fun = "very fun"                                                                                 

}      

2)首先使用scalac编译该类。(如果您使用sbt,则sbt compile会将已编译的类放入target/文件夹中)

scalac FunSets.scala

您将看到创建的funsets文件夹/包

$ ls -l
total 16
-rw-r--r--  1 updupd  NA\Domain Users   63 Dec 18 11:05 FunSets.scala
drwxr-xr-x  4 updupd  NA\Domain Users  136 Dec 18 11:06 funsets

3)然后在类路径中使用funsets包启动REPL

$ scala -classpath .
Welcome to Scala 2.12.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_151).
Type in expressions for evaluation. Or try :help.

scala> import funsets._
import funsets._

注意:如果您使用sbt compile,请将target/classes放在类路径中。

Access Funsets singleton,

scala> FunSets.fun
res0: String = very fun

另请阅读Scala REPL unable to import packge

答案 2 :(得分:1)

假设scala文件中有一些代码,您可以使用:load命令从scala repl加载外部scala文件。更多信息in this answer