如何将一个包导入到Scala的REPL中?
我正在尝试导入一个叫做funsets的包,其中包含一个名为“FunSets”的对象。
我尝试了几种不同的方式,如import funsets._
和import funsets._;
等,但仍然无法导入该包中的函数和对象。
如何将一个包导入到Scala的REPL中?
我正在尝试导入一个叫做funsets的包,其中包含一个名为“FunSets”的对象。
我尝试了几种不同的方式,如import funsets._
和import funsets._;
等,但仍然无法导入该包中的函数和对象。
一种方法是编译“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._
scala> FunSets.fun
res0: String = very fun
也可以阅读Scala REPL无法导入包
启动repl时,您需要使用-cp<jar文件>
参数将适当的jar文件添加到类路径中。或者,您可以在启动会话后使用:require <jar文件>
指令加载一个jar文件。
假设您在一个Scala文件中有一些代码,您可以使用:load
命令从Scala REPL加载外部Scala文件。更多信息请参见此答案。
:load "C:...完整文件路径名"
和其他各种变化。我甚至尝试了执行 :paste "完整文件路径名"
。
但它一直报“usage: :load -v 文件”或“usage: :paste -raw 文件”的错误。 - Linkx_lair:load myFile.scala
。 - Dylan Nissley
console
。然后,sbt 将编译 funsets 中定义的任何内容,并自动将其添加到 Scala shell 中。从那里,你就可以执行import funsets._
。 - Jorge Vicente Cantero