2013-03-19 69 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!") 
}