1

斯卡拉支持scala run xxx.scala吗?go语言支持像这样运行

go my.go

和python支持

python my.py

但似乎

scala xxx.scala

只是语法检查,没有观察到输出或运行行为。那么有没有办法直接运行scala文件?

4

4 回答 4

3

scala跑步者的目标可以通过明确指定-howtorun

If the runner does not correctly guess how to run the target:

 -howtorun    what to run <script|object|jar|guess> (default: guess)

例如,假设我们有一个胖罐子,那么我们可以运行它

scala -howtorun:jar myapp.jar

默认情况下,scala跑步者尝试猜测并运行命名目标

  • 带有 main 方法的编译类
  • 带有 Main-Class 清单头的 jar 文件
  • 用于编译和运行的 Scala 源文件

例如,给定以下Hello.scala源文件

// source file Hello.scala
object Hello {
  def main(args: Array[String]): Unit = {
    println("Hello World!")
  }
}

然后执行scala Hello.scala应该Hello World!由上面的第三个要点输出。

还要考虑你的 Scala 的第一行

于 2020-02-21T14:44:37.120 回答
2

这似乎很容易。但是你必须使用 println 来打印一些东西。

➜  ~ cat hello.scala
println("hello, world")
➜  ~ scala hello.scala
hello, world
➜  ~ scala -Vprint:parser hello.scala
[[syntax trees at end of                    parser]] // hello.scala
package <empty> {
  object Main extends scala.AnyRef {
    def <init>() = {
      super.<init>();
      ()
    };
    def main(args: Array[String]): scala.Unit = {
      final class $anon extends scala.AnyRef {
        def <init>() = {
          super.<init>();
          ()
        };
        println("hello, world")
      };
      new $anon()
    }
  }
}

hello, world
➜  ~ 

或者有几种方法可以向 REPL 提供行,它会为您打印结果。

➜  ~ cat calc.scala
2 + 2
➜  ~ scala < calc.scala
Welcome to Scala 2.13.1 (OpenJDK 64-Bit Server VM, Java 11.0.3).
Type in expressions for evaluation. Or try :help.

scala> 2 + 2
res0: Int = 4

scala> :quit
➜  ~ 

另请参见-i-I-e:loadand:paste命令。

如另一个答案所示,它还将在对象中查找 Java 样式的 main 方法。这就是您通常编译程序入口点的方式。

于 2020-02-22T02:31:39.613 回答
1

我绝对推荐ammoninte这种情况。它是独立的工具,但具有更多功能并且运行良好。

更多关于http://ammonite.io/

于 2020-02-21T14:00:31.247 回答
0

在运行 scala 源代码之前,您需要使用 scalac filename.scala命令编译 scala 代码。要执行编译的 scala 文件,您需要键入以下命令: scala filename

于 2020-02-21T12:49:19.050 回答