@@ -26,7 +26,7 @@ Scala 언어를 다루는데 필요한 도구들의 사용법을 쉽게 보여
2626아래를 보자:
2727
2828 object HelloWorld {
29- def main(args: Array[String]) {
29+ def main(args: Array[String]): Unit = {
3030 println("Hello, world!")
3131 }
3232 }
@@ -97,11 +97,10 @@ Java의 클래스 라이브러리는 `Date`와 `DateFormat`과 같은
9797이용하자.
9898
9999 import java.util.{Date, Locale}
100- import java.text.DateFormat
101100 import java.text.DateFormat._
102101
103102 object FrenchDate {
104- def main(args: Array[String]) {
103+ def main(args: Array[String]): Unit = {
105104 val now = new Date
106105 val df = getDateInstance(LONG, Locale.FRANCE)
107106 println(df format now)
@@ -116,7 +115,7 @@ Scala의 임포트 구문은 Java의 그것과 매우 비슷해 보이지만 사
116115합법적인 식별자(함수명 등에 사용 가능한)로 사용된다. 나중에 자세히 살펴
117116볼 것이다.
118117
119- 따라서 세번째 줄의 임포트 구문은 ` DateFormat ` 클래스의 모든 멤버를
118+ 따라서 두번째 줄의 임포트 구문은 ` DateFormat ` 클래스의 모든 멤버를
120119불러온다. 이렇게 함으로써 정적 함수 ` getDateInstance ` 와 정적 필드
121120` LONG ` 이 바로 사용 가능하게 된다.
122121
@@ -188,13 +187,13 @@ Java 프로그래머들에게는 놀라운 일이겠지만 Scala에서는 함수
188187화면에 출력하는 것이 된다.
189188
190189 object Timer {
191- def oncePerSecond(callback: () => Unit) {
190+ def oncePerSecond(callback: () => Unit): Unit = {
192191 while (true) { callback(); Thread sleep 1000 }
193192 }
194- def timeFlies() {
193+ def timeFlies(): Unit = {
195194 println("time flies like an arrow...")
196195 }
197- def main(args: Array[String]) {
196+ def main(args: Array[String]): Unit = {
198197 oncePerSecond(timeFlies)
199198 }
200199 }
@@ -215,10 +214,10 @@ Java 프로그래머들에게는 놀라운 일이겠지만 Scala에서는 함수
215214대신에 무명함수를 사용한 새로운 버전의 타이머 프로그램은 아래와 같다:
216215
217216 object TimerAnonymous {
218- def oncePerSecond(callback: () => Unit) {
217+ def oncePerSecond(callback: () => Unit): Unit = {
219218 while (true) { callback(); Thread sleep 1000 }
220219 }
221- def main(args: Array[String]) {
220+ def main(args: Array[String]): Unit = {
222221 oncePerSecond(() =>
223222 println("time flies like an arrow..."))
224223 }
@@ -270,7 +269,7 @@ Scala 클래스의 경우 파라미터들을 가질 수 있다는 것인데 아
270269뒤에 빈 괄호를 붙여 주어야 한다는 것이다. 아래를 보자:
271270
272271 object ComplexNumbers {
273- def main(args: Array[String]) {
272+ def main(args: Array[String]): Unit = {
274273 val c = new Complex(1.2, 3.4)
275274 println("imaginary part: " + c.im())
276275 }
@@ -306,15 +305,15 @@ Scala에서는 물론 상위 클래스에 정의된 함수를 오버라이드
306305 def re = real
307306 def im = imaginary
308307 override def toString() =
309- "" + re + (if (im < 0) "" else "+ ") + im + "i"
308+ "" + re + (if (im >= 0) "+ " else "") + im + "i"
310309 }
311310
312311
313312## 케이스 클래스 그리고 패턴 매칭
314313
315314프로그램에 자주 등장하는 데이터 구조 중의 하나는 트리이다.
316315인터프리터와 컴파일러는 흔히 트리를 사용하여 내부 표현을 저장하고,
317- XML 문서도 트리이며, 레드블랙 트리와 같은 저장구조 들도 트리에
316+ XML 문서도 트리이며, 레드-블랙 트리와 같은 저장구조들도 트리에
318317기반을 두고 있다.
319318
320319작은 계산기 프로그램을 통해 Scala에서 이러한 트리들을 어떻게
@@ -473,7 +472,7 @@ Scala로 나타내는 것은 어렵지 않다:
473472그 값을 계산 할 것이고, 다음으로 ` x ` 와 ` y ` 에 대한 심볼 추출을 수행 할
474473것이다.
475474
476- def main(args: Array[String]) {
475+ def main(args: Array[String]): Unit = {
477476 val exp: Tree = Sum(Sum(Var("x"),Var("x")),Sum(Const(7),Var("y")))
478477 val env: Environment = { case "x" => 5 case "y" => 7 }
479478 println("Expression: " + exp)
@@ -645,7 +644,7 @@ Scala는 이 문제를 해결하기 위한 제네릭 클래스와 제네릭 함
645644사용하기 위해서는 다음과 같이 쓴다:
646645
647646 object IntegerReference {
648- def main(args: Array[String]) {
647+ def main(args: Array[String]): Unit = {
649648 val cell = new Reference[Int]
650649 cell.set(13)
651650 println("Reference contains the half of " + (cell.get * 2))
@@ -658,7 +657,6 @@ Scala는 이 문제를 해결하기 위한 제네릭 클래스와 제네릭 함
658657
659658## 마치며
660659
661- 우리는 지금까지 Scala 언어의 간략한 소개와 몇가지의 예제를 살펴
662- 보았다. 흥미가 생겼다면 * Scala By Example* 도 함께 읽어보자. 더 수준
663- 높고 다양한 예제를 만날 수 있다. 필요 할 때마다 * Scala Language
664- Specification* 을 참고하는 것도 좋다.
660+ 우리는 지금까지 Scala 언어의 간략한 소개와 몇가지의 예제를 살펴 보았다.
661+ 흥미가 생겼다면 * [ Tour of Scala] ( https://docs.scala-lang.org/tour/tour-of-scala.html ) * 도 함께 읽어보자.
662+ 더 수준 높고 다양한 예제를 만날 수 있다. 필요 할 때마다 * Scala Language Specification* 을 참고하는 것도 좋다.
0 commit comments