2013-03-19 60 views
14

我是Scala的新手。我目前只能編寫基本代碼,但我想更具體地開始使用它,而不僅僅是學習理論。在Scala中使用Java庫

可以說我有在HelloWorld.java下面的Java代碼:

public class HelloWorld { 

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

} 

將相當於Scala代碼是什麼?

+0

@Reimeus:No ..我想從scala調用HelloWorld函數嗎? – Fraz 2013-03-19 18:06:33

回答

24

在你的例子中,你只需要一個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可能會更棘手。

+0

THANKs ..這就是我需要:) – Fraz 2013-03-19 18:11:39

+0

嗨,我可以請求你完全寫代碼..我是非常新的斯卡拉.. 我的斯卡拉代碼塊是在「對象」定義..和其餘東西是一樣的.. Scala和Java文件應該在同一個文件夾? – Fraz 2013-03-19 18:47:51

+0

我收到此錯誤:helloworld.scl:1:錯誤:對象示例不是包com的成員 import com.example.hello – Fraz 2013-03-19 18:52:52

4

等效代碼如下:

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! 
1
object HelloWorld{ 
     def main(args: Array[String]): Unit = { 
     println("hello world") 
    } 

} 

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