2013-03-19 17 views
14

私はScalaの新機能です。これまでのところ基本的なコードしか書くことはできませんが、私はもっと理論を学ぶのではなく、より具体的に使いたいと思っています。ScalaでのJavaライブラリの使用

public class HelloWorld { 

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

} 

同等のScalaのコードは何を次のようになります。

は私がHelloWorld.javaで次のJavaコードを考えてみましょうか?

+0

@Reimeus:いいえ。HelloWorld関数をscalaから呼び出したいのですか? – Fraz

答えて

24

あなたの例では、あなたは他の場所から必ず呼び出す必要のある関数ではなく、メイン関数を持っています。しかし、あなたは

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でもかまいません。コード内でHelloWorldオブジェクトを参照する必要がないように、メソッド自体をimport com.example.hello.HelloWorld.sayHelloでインポートすることもできます。

両方の言語がJVMバイトコードにコンパイルされるため、ScalaからJavaコードを呼び出すことは非常に簡単ですが、暗黙的なパラメータが含まれているとJavaからScalaを呼び出すのが難しい場合があります。

+0

THanks ..これは私が必要なものです:) – Fraz

+0

こんにちは、コードを完全に書いてください。私は非常にスケーラに新しいです。 私のスカラコードブロックは、 "オブジェクト"定義内にあります。ものは同じです..スカラとJavaファイルは同じフォルダにある必要がありますか? – Fraz

+0

このエラーが発生しました:helloworld.scl:1:error:オブジェクトの例がパッケージcomのメンバではありません import com.example.hello – Fraz

4

同等のコードは次のようになります。

$ scalac HelloWorld.scala 

$ scala HelloWorld 
Hello, world! 

するか、あなたが作業している場合:

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

あなたは、あなたがコンパイルしそうのようにそれを実行することができHelloWorld.scalaと呼ばれるファイルにそのコードを保存した場合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!") 
} 
関連する問題