Scala 3 — Book

Пример 'Hello, World!'

Language

Подсказка: в следующих примерах попробуйте выбрать предпочтительную для вас версию Scala.

Ваша первая Scala-программа

Пример “Hello, World!” на Scala выглядит следующим образом. Сначала поместите этот код в файл с именем hello.scala:

object hello {
  def main(args: Array[String]) = {
    println("Hello, World!")
  }
}

В этом коде мы определили метод с именем main внутри Scala object-а с именем hello. object в Scala похож на class, но определяет экземпляр singleton, который можно передать. main принимает входной параметр с именем args, который должен иметь тип Array[String] (args пока можно игнорировать).

@main def hello() = println("Hello, World!")

В этом коде hello - это метод. Он определяется с помощью def и объявляется в качестве основного метода с помощью аннотации @main. Он выводит строку “Hello, World!” на стандартный вывод (STDOUT) с помощью метода println.

Затем скомпилируйте код с помощью scalac:

$ scalac hello.scala

Если вы переходите на Scala с Java: scalac похоже на javac, эта команда создает несколько файлов:

$ ls -1
hello$.class
hello.class
hello.scala
$ ls -1
hello$package$.class
hello$package.class
hello$package.tasty
hello.scala
hello.class
hello.tasty

Как и Java, файлы .class представляют собой файлы байт-кода, и они готовы к запуску в JVM.

Теперь вы можете запустить метод hello командой scala:

$ scala hello
Hello, World!

Если запуск прошел успешно, поздравляем, вы только что скомпилировали и запустили свое первое приложение Scala.

Дополнительную информацию о sbt и других инструментах, упрощающих разработку на Scala, можно найти в главе Инструменты Scala.

Запрос пользовательского ввода

В нашем следующем примере давайте спросим имя пользователя, прежде чем приветствовать его!

Есть несколько способов прочитать ввод из командной строки, но самый простой способ — использовать метод readLine из объекта scala.io.StdIn. Чтобы использовать этот метод, вам нужно сначала его импортировать, например:

import scala.io.StdIn.readLine

Чтобы продемонстрировать, как это работает, давайте создадим небольшой пример. Поместите этот исходный код в файл с именем helloInteractive.scala:

import scala.io.StdIn.readLine

object helloInteractive {

  def main(args: Array[String]) = {
    println("Please enter your name:")
    val name = readLine()

    println("Hello, " + name + "!")
  }

}
import scala.io.StdIn.readLine

@main def helloInteractive() =
  println("Please enter your name:")
  val name = readLine()

  println("Hello, " + name + "!")

В этом коде мы сохраняем результат из readLine в переменную с именем name, затем используем оператор над строками + для соединения "Hello, " с name и "!", создавая одно единственное строковое значение.

Вы можете узнать больше об использовании val, прочитав главу Переменные и типы данных.

Затем скомпилируйте код с помощью scalac:

$ scalac helloInteractive.scala

Затем запустите его с помощью scala helloInteractive. На этот раз программа сделает паузу после запроса вашего имени и подождет, пока вы не наберете имя и не нажмете клавишу возврата на клавиатуре. Выглядит это так:

$ scala helloInteractive
Please enter your name:
▌

Когда вы вводите свое имя в “приглашении”, окончательное взаимодействие должно выглядеть так:

$ scala helloInteractive
Please enter your name:
Alvin Alexander
Hello, Alvin Alexander!

Примечание об импорте

Как вы ранее видели, иногда определенные методы или другие типы определений, которые мы увидим позже, недоступны, если вы не используете подобное предложение import:

import scala.io.StdIn.readLine

Импорт помогает писать и распределять код несколькими способами:

  • вы можете поместить код в несколько файлов, чтобы избежать беспорядка и облегчить навигацию в больших проектах.
  • вы можете использовать библиотеку кода, возможно, написанную кем-то другим, которая имеет полезную функциональность.
  • вы видите, откуда берется определенное определение (особенно если оно не было записано в текущем файле).

Contributors to this page: