listas - Usando las bibliotecas de Java en Scala
programas de scala (3)
Soy nuevo en Scala. Hasta ahora solo puedo escribir código básico, pero quiero comenzar a usarlo de manera más concreta, en lugar de solo aprender teoría.
Digamos que tengo el siguiente código de Java en HelloWorld.java :
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
¿Cuál sería el código Scala equivalente?
El código equivalente sería:
object HelloWorld extends App {
println("Hello, world!")
}
Si guardó ese código en un archivo llamado HelloWorld.scala
, podría compilarlo y ejecutarlo así:
$ scalac HelloWorld.scala
$ scala HelloWorld
Hello, world!
O si estás trabajando en el 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!
En su ejemplo, solo tiene una función principal, no una a la que necesariamente llamaría de otra parte. Pero digamos que tenías una función como
package com.example.hello;
public class HelloWorld {
public static void sayHello() {
System.out.println("Hello, world!");
}
}
(También agregué un paquete para su ejemplo, para completar). Luego en tu código Scala, podrías hacer:
import com.example.hello._
(0 until 10).foreach {
HelloWorld.sayHello()
}
para saludar usando la función Java 10 veces en Scala. El ._
en la import
importa todos los miembros del paquete, o alternativamente puede import com.example.hello.HelloWorld
. Incluso podría importar el método en sí mismo con import com.example.hello.HelloWorld.sayHello
para que no necesite hacer referencia al objeto HelloWorld
en su código.
Ambos lenguajes se compilan en el código de bytes JVM, por lo que llamar código Java desde Scala es muy simple, aunque llamar a Scala desde Java puede ser más complicado si hay parámetros implícitos involucrados.
object HelloWorld{
def main(args: Array[String]): Unit = {
println("hello world")
}
}
o
object HelloWorld extends App {
println("Hello, world!")
}