Использование библиотек Java в Scala
Я новичок в Scala. До сих пор я могу писать базовый код, но я хочу начать использовать его более конкретно, а не просто изучать теорию.
Допустим, у меня есть следующий Java-код в HelloWorld.java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
Каким будет эквивалентный код Scala?
Ответы
Ответ 1
В вашем примере у вас есть только основная функция, а не функция, которую вы обязательно должны будете звонить из другого места. Но пусть сказал, что у вас есть функция вроде
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()
}
чтобы сказать привет, используя функцию Java 10 раз в Scala. ._
в import
импортирует все элементы пакета или, альтернативно, вы можете просто import com.example.hello.HelloWorld
. Вы даже можете импортировать этот метод с помощью import com.example.hello.HelloWorld.sayHello
, чтобы вам не нужно ссылаться на объект HelloWorld
в вашем коде.
Оба языка компилируются в байт-код JVM, поэтому вызов Java-кода из Scala очень прост, хотя вызов Scala из Java может быть более сложным, если есть неявные параметры.
Ответ 2
Эквивалентным кодом будет:
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!
Ответ 3
object HelloWorld{
def main(args: Array[String]): Unit = {
println("hello world")
}
}
или
object HelloWorld extends App {
println("Hello, world!")
}