Scala
설치
스칼라 설치는 윈도우 기준입니다.
scala-lang 다운로드
각자 OS에 맞게 다운로드하셔서 설치하시면 됩니다.
IDE는 Eclipse, IntelliJ, NetBeans등 많습니다.
Console실행을 어디서나 하고 싶으시면, 환경변수에 scala\bin 디렉토리까지 Path에 추가해주시면 됩니다.(이 정보는 검색하시면 금방 나옵니다. 설치시 아마도 자동으로 import 될 겁니다.)
특징
- 타입 추론
- 함수 개념
- 불변 변수
- 스칼라는 불변변수를 기본적으로 지원하며, 용도에 따라 변경 가능 변수도 선언 할 수 있다.
scala> println("Hello, Scala World")
Hello, Scala World
scala>
아래 보는 것처럼 정수는 객체인 걸 확인 할 수 있다.
scala> 1 + 1
res13: Int = 2
scala> (1). + (1)
res14: Int = 2
scala> 5 * 12
res15: Int = 60
scala>
스칼라에서는 미세한 예외를 제외하면, 모든 것이 객체로 처리 된다.
이 것으로도 정적 타이핑 시스템을 사용하는 언어와 다른 점이다.
scala> "abc".size
res16: Int = 3
scala> 4 + "seungdols"
res17: String = 4seungdols
scala>
스칼라에서는 문자열 그 자체로 어느 정도 ‘일급 객체’로 볼 수 있다.
위 코드에서는 스칼라 컴파일러가 타입 추론하여 알아서 String 형 변환까지 하는 것을 볼 수 있다. 그러나, 스칼라는 강한 타이핑 시스템을 사용한다.
루비와는 다르게 콘솔로 실행하더라도, 코드 내용을 한 줄 한 줄 컴파일하고 즉시 실행한다.
즉, Strong Typing System이므로 컴파일시간에 오류를 잡아내준다. 이것은 루비보다 훨씬 나은 점이자, 좋은 장점으로 여길 수 있다. 왜냐하면, 루비는 오류가 있더라도 Run-time시에 발생해 프로그래머의 실수나, 오류를 잡아내려면 무조건 실행이 되어야 한다. 그런데, 스칼라의 경우 언어 컴파일러 차원에서 오류를 잡아 주므로 훨씬 안정적이다.
표현·조건
scala> 5 < 6
res18: Boolean = true
scala> 5 <= 6
res19: Boolean = true
scala> 5 <= 2
res20: Boolean = false
scala> val a = 1
a: Int = 1
scala> val b = 2
b: Int = 2
scala> if(b < a){
| println("True")
| }else{
| println("False")
| }
False
scala>
별 다른 차이는 없다. Java의 조건식과 거의 유사하다. 장점은 루비와는 다르게 컴파일시간에 자료형을 바인딩(Binding)
Java와도 다른 점은 스칼라는 자료형을 추론한다는 점이다. 특히, 스칼라의 장점이기도 하지만, 단점이기도 한 불변변수/변경가능 변수가 존재한다.
val은 불변 변수, var은 변경 가능 변수이다.
루비에서는 0이 True로 평가되지만, C에서는 0은 false이다.
두 언어에서 nil은 false로 평가 된다.
scala> if(0){println("True")}
<console>:11: error: type mismatch;
found : Int(0)
required: Boolean
if(0){println("True")}
^
scala> if(Nil){println("True")}
<console>:11: error: type mismatch;
found : scala.collection.immutable.Nil.type
required: Boolean
if(Nil){println("True")}
^
즉, Nil, 0을 boolean 값으로 검사할 수 없다.
쉽게 말해 변수에 자료형타입을 이어주는 것을 말함.↩