如何将包导入Scala的REPL?
我试图导入这个名为funsets的包,它有一个名为“FunSets”的对象。
我尝试了import funsets._
和import funsets._;
等的几种变体,但它仍未导入包中的函数和对象。
答案 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
答案 2 :(得分:1)
假设scala文件中有一些代码,您可以使用:load
命令从scala repl加载外部scala文件。更多信息in this answer。