본문 바로가기

옥탑방주인/Scala

Chapter 1. Getting Started

 




 시작하기 앞서, https://underscore.io/training/courses/essential-scala/ 주소에 있는 essential scala 라는 책 내용을 계속해서 업데이트 할 예정입니다.

잘못된 부분은 댓글로 알려주시면 감사하겠습니다.



Chapter 1



Getting Started


이 책의 스칼라 코드의 짧은 예제들을 실행해 볼 것이다. 스칼라 실행방법에 2가지의 추천사항이 있다.



  1. 스클라 콘솔을 이용하는방법(커맨드 라인을 좋아하는 사람들한테 추천)
  2. IDE를 사용해서 스칼라를 사용함.(IDE를 사용하는사람들한테 추천)

1.1 스칼라 콘솔 셋업


http://scala-lang.org 홈페이지에 가면 스칼라 콘솔을 셋업하는법이 나와있다.  스칼라가 인스톨 되었다면, 반응형 콘솔을 실행해서 커맨드라인에 타이핑 할 수 있다. OS X의 예를 들어보겠다:

test@test ~> scala
Welcome to Scala version 2.11.11 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_80).
Type in expressions to have them evaluated.
Type :help for more information.
scala>


프롬프트에 명령어를 입력시켜서 컴파일하고 실행할 수 있다:

scala> "Hello world!"
res0: String = Hello wrold!


1.1.1    Entering Single-Line Expressions


싱글 표현을 입력해보자

scala> 1 + 2 + 3
res1: Int = 6


우리가 엔터를 치면, 콘솔은 세가지에 반응이 있을 것이다.


    • 식별자 res1; (an identifier res1)
    • Int형 타입 (a type Int)
    • 값 6 (a value 6)


다음챕터에서 알게되겠지만, 스칼라에서 모든 표현은 타입(type)과 값(value)으로 된다. 타입(type)은 컴파일 타임에 결정되고 값(value)은 expression을 실행할 때 결정된다. 


식별자 res1은 추후의 표현식(expression)에 사용될 수 있고, 이러한 과정을 콘솔에 쉽게 제공한다.

아래의 예제를 보고 이해해보자.

scala> res1 * 2("Hello world!")
res2: Int = 12


표현식에 옳바르지 않은 값을 입력하면, 콘솔은 응답하지 않을 것이다.

scala> println("Hello world!")
Hello world!

Hello world!는 println 명령(statement)의 출력(output)이다.- 이 표현식은 리턴값을 입력할 수 없다. 위에서 res1 처럼 println명령은 출력값을 변경할 수 없다.


1.1.2 Entering Multi-Line Expressions


콘솔에서는 매우 간단하게 긴 라인의 표현식을 나눌 수 있다. 이전에는 표현식에서 엔터를 치면 종료되었지만, 콘솔에서 | 가 나타내어져있으면 계속해서 라인을 입력할 수 있다.

scala> for(i <- 1 to 3) {     |    println(i)     | } 1 2 3


보통 많은 표현식을 한번에 입력하길 원한다. 이 경우에는 :paste 커맨드를 사용하면 된다. 간단하게 콘솔에 :paste를 입력해서 엔터를 치고, 코드를 입력하면 자동으로 복사가 된다. 코드를 다 입력했다면 Ctrl + D(컨트롤+D)를 누르면 평소처럼 코드가 컴파일되고 실행한다

scala> :paste
// Entering paste mode (ctrl-D to finish)

val x = 1
val y = 2
x + y
// Exiting paste mode, now interpreting.

x: Int = 1
y: Int = 2
res6: Int = 3


스칼라 코드 파일을 가지고 있다면, 파일의 코드를 :paste명령어를 입력해서 콘솔에 입력할 수 있다. 이것은 표현식을 콘솔에 입력하는데 매우 편리하다. 예를들어, 파일이름이 example.txt이고 1 + 2 + 3 을 갖고있다면(파일의 출력이 1 + 2 + 3 이라는듯) :paste명령어를 사용하면:

scala> :paste example.scala
Pasting file example.scala...
res0: Int = 6

이렇게 출력될 것이다.


1.1.3 Printing the Type of an Expression


콘솔을 사용하는데 한가지 팁을 주자면. 가끔 표현식의 타입을 실행없이 알고싶을때 :type 커맨드를 입력하면 알수있다.

scala> :type println("Hello world!")
Unit

이 표현식은 콘솔에서 println문을 실행하지 않는다. 이것은 간단한 컴파일과 타입을 표현해준다.


Unit은 Java와 C에서 void와 같다.




IDE설치법은 각자 다를 수 있으므로 생략하겠습니다. 필요하신분들은 맨 위 링크 참조해서 파일 다운 후 읽으세용


1.2 SETTING UP SCALA IDE


IDE왼편에 어떤 표현식이든 추가가 가능하고 평가되며(실행할 수 있으며), 출력할 수 있다. 이것을 입증하기 위해 편집기의 텍스트를 아래처럼 바꿔라.

object FirstSteps {
    println("Welcome to the Scala worksheet")

    1 + 1

    if(20 > 10) "left" else "right"

    println("The ultimate answer is " + 42)
}

프로젝트 파일을 세이브해라. 이클립스는 자동으로 코드의 라인을 평가할 것이고 에디터 오른쪽의 결과는 출력된다.

object FirstSteps { println("Welcome to the Scala worksheet") //> Welcome to the Scala worksheet 1 + 1 //> res0: Int(2) = 2 if(20 > 10) "left" else "right" //> res1: String = left println("The ultimate answer is " + 42) //> The ultimate answer is 42 }

앞으로의 과정을 진행하면서 모든 텍스트가 의미하는 바를 알게 될 것이다.