web-dev-qa-db-fra.com

Utilisation des bibliothèques Java dans Scala

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?

23
Mohit

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.

38
arkajit

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

}

ou

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