Je suis nouveau à Scala. Jusqu'à présent, je ne peux écrire que du code de base, mais je veux commencer à l'utiliser plus concrètement, plutôt que de simplement apprendre la théorie.
Disons que j'ai le code Java Java dans HelloWorld.Java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
Quel serait le code Scala équivalent?
Dans votre exemple, vous avez juste une fonction principale, pas une fonction que vous appelleriez nécessairement ailleurs. Mais disons que vous aviez une fonction comme
package com.example.hello;
public class HelloWorld {
public static void sayHello() {
System.out.println("Hello, world!");
}
}
(J'ai également ajouté un package pour votre exemple, pour être complet). Ensuite, dans votre code Scala, vous pouvez faire:
import com.example.hello._
(0 until 10).foreach {
HelloWorld.sayHello()
}
dire bonjour en utilisant la fonction Java 10 fois dans Scala. Le ._
Dans le import
importe tous les membres du package, ou bien vous pouvez simplement import com.example.hello.HelloWorld
. Vous pouvez même importer la méthode elle-même avec import com.example.hello.HelloWorld.sayHello
Afin que vous n'ayez pas besoin de référencer l'objet HelloWorld
dans votre code.
Les deux langues se compilent en bytecode JVM, donc appeler le code Java à partir de Scala est très simple, bien qu'appeler Scala à partir de Java peut être plus difficile s'il y a des paramètres implicites impliqués.
Le code équivalent serait:
object HelloWorld extends App {
println("Hello, world!")
}
Si vous avez enregistré ce code dans un fichier appelé HelloWorld.scala
alors vous pouvez compiler et exécuter comme ceci:
$ scalac HelloWorld.scala
$ scala HelloWorld
Hello, world!
Ou si vous travaillez dans le 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")
}
}
ou
object HelloWorld extends App {
println("Hello, world!")
}