如何启动命令行Scala的方法?(How to start a Scala method from

2019-07-30 23:46发布

这个问题听起来有点傻,但我无法弄清楚,如何启动命令行Scala的方法。

我整理了以下文件Test.scala

package example

object Test {
  def print() {
    println("Hello World")
  }

}

scalac Test.scala

然后,我可以运行的方法printscala两个步骤:

C:\Users\John\Scala\Examples>scala
Welcome to Scala version 2.9.2 (Java HotSpot(TM) Client VM, Java 1.6.0_32).
Type in expressions to have them evaluated.
Type :help for more information.

scala> example.Test.print
Hello World

但我真正想做的是,直接在命令行中包含一个命令运行的方法scala example.Test.print

我怎样才能实现这一目标?

更新:通过ArikG建议的解决方案并没有为我工作-我缺少什么?

C:\Users\John\Scala\Examples>scala -e 'example.Test.print'
C:\Users\John\AppData\Local\Temp\scalacmd1874056752498579477.scala:1: error: u
nclosed character literal
'example.Test.print'
         ^
one error found

C:\Users\John\Scala\Examples>scala -e "example.Test.print"
C:\Users\John\AppData\Local\Temp\scalacmd1889443681948722298.scala:1: error: o
bject Test in package example cannot be accessed in package example
example.Test.print
        ^
one error found

哪里

C:\Users\John\Scala\Examples>dir example
 Volume in drive C has no label.
 Volume Serial Number is 4C49-8C7F 

 Directory of C:\Users\John\Scala\Examples\example

14.08.2012  12:14    <DIR>          .
14.08.2012  12:14    <DIR>          ..
14.08.2012  12:14               493 Test$.class
14.08.2012  12:14               530 Test.class
               2 File(s)          1.023 bytes
               2 Dir(s)  107.935.760.384 bytes free

更新2 -可能的解决方案:

  • 作为ArikG正确建议,与scala -e "import example.Test._; print"与Windows 7运行良好。
  • 见丹尼尔的回答得到它没有import语句工作

Answer 1:

让我对这个解决方案有点扩大:

scala -e 'example.Test.print'

相反,尝试:

scala -cp path-to-the-target-directory -e 'example.Test.print'

如果目标目录是作为目的地,不管它编阶的目录。 在您的例子, 它不是 C:\Users\John\Scala\Examples\example ,但C:\Users\John\Scala\Examples 。 目录example就是斯卡拉将寻找属于包中的类example

这就是为什么事情没有工作:它希望找到包example目录例如下,但也有在其中运行的当前目录下没有这样的目录scala ,而且存在于当前目录下的类文件预计是在默认的包。



Answer 2:

要做到这一点,最好的办法是扩展应用程序这是一个稍微特殊的类(或至少DelayedInit它强调它是):

package example

object Test extends App {
  println("Hello World")      
}

它仍然可能方法添加到这个问题,以及,对象的身体上启动时执行。



Answer 3:

干得好:

scala -e 'example.Test.print'


文章来源: How to start a Scala method from command line?
标签: scala console