我是 Scala 的新手。到目前为止,我只能编写基本代码,但我想开始更具体地使用它,而不仅仅是学习理论。
假设我在HelloWorld.java中有以下 Java 代码:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
从 Scala 调用它的代码是什么?
我是 Scala 的新手。到目前为止,我只能编写基本代码,但我想开始更具体地使用它,而不仅仅是学习理论。
假设我在HelloWorld.java中有以下 Java 代码:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
从 Scala 调用它的代码是什么?
在您的示例中,您只有一个主函数,而不是您必须从其他地方调用的函数。但是假设你确实有一个像
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 可能会比较棘手。
等效代码为:
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!
object HelloWorld{
def main(args: Array[String]): Unit = {
println("hello world")
}
}
或者
object HelloWorld extends App {
println("Hello, world!")
}