我像这样启动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
并输出函数的值?
答案 0 :(得分:17)
简而言之,使用scala REPL中的:load
函数来加载文件。然后,如果将它包装在对象或类中,则可以在文件中调用该函数,因为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
中,则可以使用scala REPL / sbt控制台中的:paste
命令将其粘贴。
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