Scalaは初めてです。今までは基本的なコードしか書けませんでしたが、理論を学ぶだけでなく、もっと具体的に使っていきたいです。
次のJavaコードHelloWorld.Javaがあるとします。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
同等のScalaコードはどうなるでしょうか?
あなたの例では、あなたはメインだけを持っています、あなたが必ずしもどこか他から呼び出す関数ではありません。しかし、次のような関数があるとしましょう
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を呼び出すのは、関連する暗黙のパラメータがあります。
同等のコードは次のようになります。
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!")
}