Hello, World!
Hello, World! (첫 번째 스칼라 프로그램)
프로그래밍 언어를 처음 배울 때 가장 먼저 만나는 건 언제나 "Hello, World!"예요. 스칼라도 다르지 않아요. 첫 프로그램을 만들어 보면서 스칼라 코드가 어떻게 생겼고, 어떻게 컴파일되고 실행되는지 한 번에 확인해 볼게요.
출처: Scala 3 Book
본문
첫 번째 스칼라 프로그램
스칼라의 "Hello, World!" 예제는 이렇게 생겼어요. 먼저 hello.scala라는 파일에 다음 코드를 넣어 보세요.
Scala 2 버전
object hello {
def main(args: Array[String]) = {
println("Hello, World!")
}
}
이 코드에서 우리는 hello라는 스칼라 object 안에 main이라는 메서드를 정의했어요. 스칼라의 object는 클래스와 비슷하지만, 여기저기 전달할 수 있는 싱글턴 인스턴스를 정의한다는 점이 달라요. main은 args라는 입력 파라미터를 받는데, 타입은 Array[String]이어야 해요. 지금은 args가 뭔지 신경 쓰지 않아도 돼요.
Scala 3 버전
@main def hello() = println("Hello, World!")
이 코드에서 hello는 메서드예요. def로 정의하고, @main 어노테이션으로 "main" 메서드임을 선언해요. 그리고 println 메서드를 사용해 "Hello, World!" 문자열을 표준 출력(STDOUT)에 찍어요.
이제 scala 명령어로 코드를 컴파일하고 실행해 볼게요.
$ scala run hello.scala
명령어는 다음과 비슷한 출력을 만들어요.
Compiling project (Scala 3.9.0, JVM (20))
Compiled project (Scala 3.9.0, JVM (20))
Hello, World!
이 출력이 보인다면 축하해요, 방금 스칼라 애플리케이션을 컴파일하고 실행한 거예요. sbt를 비롯해 스칼라 개발을 더 편하게 만들어 주는 도구들에 대한 더 많은 정보는 스칼라 도구(Scala Tools) 챕터에서 다루고 있어요. 스칼라 CLI 문서는 여기에서 확인할 수 있어요.
사용자 입력 받기
다음 예제에서는 인사를 건네기 전에 사용자의 이름을 물어볼게요.
명령줄에서 입력을 읽는 방법은 여러 가지가 있는데, 그중 간단한 방법 하나는 scala.io.StdIn object에 있는 readLine 메서드를 쓰는 거예요. 이걸 쓰려면 먼저 다음과 같이 import 해야 해요.
import scala.io.StdIn.readLine
이게 어떻게 동작하는지 보여주기 위해 작은 예제를 만들어 볼게요. helloInteractive.scala라는 파일에 이 소스 코드를 넣어 보세요.
Scala 2 버전
import scala.io.StdIn.readLine
object helloInteractive {
def main(args: Array[String]) = {
println("Please enter your name:")
val name = readLine()
println("Hello, " + name + "!")
}
}
Scala 3 버전
import scala.io.StdIn.readLine
@main def helloInteractive() =
println("Please enter your name:")
val name = readLine()
println("Hello, " + name + "!")
이 코드에서는 readLine의 결과를 name이라는 변수에 저장해요. 그리고 문자열의 + 연산자를 사용해 "Hello, " 와 name, 그리고 "!"를 이어 붙여 하나의 문자열 값으로 만들어요.
val을 더 자세히 알고 싶다면 변수와 데이터 타입(Variables and Data Types) 문서를 읽어 보세요.
그다음 scala로 코드를 실행해요. 이번에는 이름을 물어본 뒤 프로그램이 잠시 멈췄다가, 이름을 입력하고 키보드에서 엔터를 누를 때까지 기다려요. 실행하면 이렇게 보여요.
$ scala run helloInteractive.scala
Compiling project (Scala 3.9.0, JVM (20))
Compiled project (Scala 3.9.0, JVM (20))
Please enter your name:
▌
프롬프트에 이름을 입력하면, 최종 상호작용은 다음과 같아요.
$ scala run helloInteractive.scala
Compiling project (Scala 3.9.0, JVM (20))
Compiled project (Scala 3.9.0, JVM (20))
Please enter your name:
Alvin Alexander
Hello, Alvin Alexander!
import에 대한 참고 사항
이 애플리케이션에서 본 것처럼, 어떤 메서드나 나중에 볼 다른 종류의 정의들은 이렇게 import 절을 사용하지 않으면 사용할 수 없는 경우가 있어요.
import scala.io.StdIn.readLine
import는 몇 가지 면에서 코드 작성을 도와줘요.
- 코드를 여러 파일에 나눠 담아 정리를 돕고, 큰 프로젝트를 탐색하기 쉽게 만들어 줘요.
- 다른 사람이 작성한, 유용한 기능을 가진 코드 라이브러리를 사용할 수 있게 해 줘요.
- 어떤 정의가 어디에서 왔는지 알 수 있게 해 줘요(특히 현재 파일이 아닌 곳에서 작성된 경우).
더 알아보기 (Learn more)
- Scala 3 Book — Tools (sbt) — sbt로 스칼라 프로젝트를 빌드하는 방법
- Variables and Data Types —
val과 데이터 타입