개요
Scala는 객체지향 언어의 특징과 함수형 언어의 특성을 동시에 가지는 Java기반의 언어이다. Scala는 Scalability를 위한 확장성에 초점을 맞추어 개발되었으며, Java보다 더욱 프로그래밍 언어측면에서 진보한 언어적 특징들을 가지고 있다.
문법
List
Scala에서 리스트는 Nil값을 가지거나, 아니면 list = list with addtional value로 정의된 구조이다.
val x: List[Int] = Nil
// List() 즉 empty 리스트 선언val y: List[Int] = List(1, 2, 3, 4)
// List(1, 2, 3, 4)42 :: y
// List(1, 2, 3, 4) + 42 => List(42, 1, 2, 3, 4)
이외에도 reverse, contains, map, foldLeft
와 멤버함수들이 정의되어 있다.
Functions
스칼라는 컴파일 타임에 모든 타입을 체크한다.
def add(a: Int, b: Int): Int = a + b
와 같은 경우에는 Int타입을 Input으로 받고, a + b를 내보내게된다.
특히 return
없이 마지막 결과가 리턴되게 된다.
Type Inference
스칼라는 타입을 명시하지 않아도, 타입을 추론하여 어떤 타입인지를 결정한다.
val m = add(1, 2)
에서 m의 타입은 자동으로 Int로 된다. 그러나 함수의 인자를 생략하는 것처럼 추론할 수 없는 타입은 컴파일이 되지 않는다.
Expression-Oriented Programming
자바나 C와는 다르게, Scala는 expression이 변수에 대입될 수 있다.
val p = if (i > 0) -1 else -2
와 같은 식이 가능하다.
설치 및 실행
sudo apt install openjdk-17-jdk-headless #17은 최신 버전으로 변경 가능. (sudo apt-get install default-jdk)도 가능. sudo apt-get install scala >scala