scala - 如何将包导入 Scala REPL?

标签 scala sbt read-eval-print-loop

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

最佳答案

一种方法是编译“scala 类”并将它们放入 classpath .

例子,

1) 假设你有一个类(class) 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在类路径中。

访问 Funsets 单例,
scala> FunSets.fun
res0: String = very fun

另请阅读 Scala REPL unable to import packge

关于scala - 如何将包导入 Scala REPL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47874731/

相关文章:

Scala 在案例类中使用 Wea​​kReference

scala - Play Framework 2 Scala WS 执行同步请求

scala - SBT:插件依赖项和项目类路径

sbt - SBT 0.13 中的任务定义不接受打印?

swift - Swift 是否有与 pdb.set_trace() 等效的函数

Emacs Lisp : How to, 与 REPL 的交互式缓冲区?

string - Scala 子字符串并将其存储在 DF 中

scala - 使用akka-http时如何在另一个actor中完成请求

code-generation - SBT 使用项目定义的生成器生成代码

http - 在 Racket 中从 REPL 发出 HTTP GET