web-dev-qa-db-ja.com

JavaライブラリをScala

Scalaは初めてです。今までは基本的なコードしか書けませんでしたが、理論を学ぶだけでなく、もっと具体的に使っていきたいです。

次のJavaコードHelloWorld.Javaがあるとします。

public class HelloWorld {

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

}

同等のScalaコードはどうなるでしょうか?

23
Mohit

あなたの例では、あなたはメインだけを持っています、あなたが必ずしもどこか他から呼び出す関数ではありません。しかし、次のような関数があるとしましょう

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バイトコードにコンパイルされるため、JavaからScalaコードを呼び出すのは非常に簡単ですが、ScalaからJavaを呼び出すのは、関連する暗黙のパラメータがあります。

38
arkajit

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

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

}

または

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