26

我是 Scala 的新手。到目前为止,我只能编写基本代码,但我想开始更具体地使用它,而不仅仅是学习理论。

假设我在HelloWorld.java中有以下 Java 代码:

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello, World");
    }

}

从 Scala 调用它的代码是什么?

4

3 回答 3

44

在您的示例中,您只有一个主函数,而不是您必须从其他地方调用的函数。但是假设你确实有一个像

package com.example.hello;

public class HelloWorld {
  public static void sayHello() {
    System.out.println("Hello, world!");
  }
}

(为了完整起见,我还为您的示例添加了一个包)。然后在您的 Scala 代码中,您可以执行以下操作:

import com.example.hello._

object GreetWorld extends App {
  (0 until 10).foreach {
    HelloWorld.sayHello()
  }
}

在 Scala 中使用 Java 函数打招呼 10 次。在导入包._import所有成员,或者你可以只是import com.example.hello.HelloWorld. 您甚至可以导入方法本身,import com.example.hello.HelloWorld.sayHello这样您就不需要HelloWorld在代码中引用该对象。

两种语言都编译为 JVM 字节码,因此从 Scala 调用 Java 代码非常简单,尽管如果涉及隐式参数,从 Java 调用 Scala 可能会比较棘手。

于 2013-03-19T18:09:49.860 回答
2

等效代码为:

object HelloWorld extends App {
  println("Hello, world!")
}

如果您将该代码保存在一个名为的文件中,HelloWorld.scala那么您可以像这样编译和运行它:

$ scalac HelloWorld.scala

$ scala HelloWorld
Hello, world!

或者,如果您在 REPL 中工作:

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

object HelloWorld extends App {
  println("Hello, world!")
}

// Exiting paste mode, now interpreting.

defined module HelloWorld

scala> HelloWorld.main(Array.empty[String])
Hello, world!
于 2013-03-20T14:55:34.010 回答
1
object HelloWorld{
      def main(args: Array[String]): Unit = {
      println("hello world")
    }

}

或者

object HelloWorld extends App {
  println("Hello, world!")
}
于 2014-12-16T08:46:14.740 回答