可能重复:
斯卡拉加载文件到解释器使用的功能呢?
我开始喜欢这个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
和输出功能的价值?
总之,使用: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
然后调用timesTwo
在Times
:
scala> Times.timesTwo(2)
hello world
res0: Int = 4
如果你只想函数的定义,而不在其包装class
或object
的,你可以使用以下命令将其粘贴: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