我是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