我是Scala的新手。我目前只能编写基本代码,但我想更具体地开始使用它,而不仅仅是学习理论。在Scala中使用Java库
可以说我有在HelloWorld.java下面的Java代码:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
将相当于Scala代码是什么?
我是Scala的新手。我目前只能编写基本代码,但我想更具体地开始使用它,而不仅仅是学习理论。在Scala中使用Java库
可以说我有在HelloWorld.java下面的Java代码:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
将相当于Scala代码是什么?
在你的例子中,你只需要一个main,而不是你需要从其他地方调用的函数。但让我们说你有一个功能,如
package com.example.hello;
public class HelloWorld {
public static void sayHello() {
System.out.println("Hello, world!");
}
}
(我也为你的例子添加了一个包,为了完整性)。然后在你的Scala代码中,你可以这样做:
import com.example.hello._
(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!")
}
@Reimeus:No ..我想从scala调用HelloWorld函数吗? – Fraz 2013-03-19 18:06:33