如何加载在SBT控制台Scala的文件? [重复](How to load a scala fi

2019-08-04 04:00发布

可能重复:
斯卡拉加载文件到解释器使用的功能呢?

我开始喜欢这个SBT控制台:

alex@alex-K43U:~/projects$ sbt console
[info] Set current project to default-8aceda (in build file:/home/alex/projects/)
[info] Starting scala interpreter...
[info] 
Welcome to Scala version 2.9.2 (OpenJDK Client VM, Java 1.6.0_24).
Type in expressions to have them evaluated.
Type :help for more information.

scala>

我有一个test.scala (/home/alex/projects/test.scala)有这样的文件:

def timesTwo(i: Int): Int = {
  println("hello world")
  i * 2
}

如何做到这一点,这样我可以在控制台做这样的事情:

scala> timesTwo

和输出功能的价值?

Answer 1:

总之,使用:load功能在斯卡拉REPL加载文件。 然后,你可以调用该文件在功能,如果你把它包装在一个对象或类,因为sbt尝试编译它。 不知道你是否可以只用一个函数定义做到这一点。

把它包在一个object来获得sbt正确编译。

object Times{
  def timesTwo(i: Int): Int = {
    println("hello world")
    i * 2
  }
}

加载文件:

 scala> :load Times.scala
 Loading Times.scala...
 defined module Times

然后调用timesTwoTimes

 scala> Times.timesTwo(2)
 hello world
 res0: Int = 4

如果你只想函数的定义,而不在其包装classobject的,你可以使用以下命令将其粘贴:paste在斯卡拉REPL / SBT控制台。

scala> :paste
// Entering paste mode (ctrl-D to finish)

def timesTwo(i: Int): Int = {
  println("hello world")
  i * 2
}

// Exiting paste mode, now interpreting.

timesTwo: (i: Int)Int

这可以通过只函数名被调用。

 scala> timesTwo(2)
 hello world
 res1: Int = 4


文章来源: How to load a scala file in the sbt console? [duplicate]
标签: scala sbt