[Spark-Study] Day-9 스칼라?

2021. 9. 9. 13:42Study/Study group

반응형

빅데이터 분석을 위한 스칼라와 스파크 책을 구입!

107p 까지 읽음.

간략하게 요약해보면

1장
스칼라는
함수형 프로그래밍과 강력한 정적 타입 시스템을 지원하는 벙용 프로그래밍 언어.

정적타입? 프로그래밍언어에서 컴파일 시간에 변수의 타입을 알게 되면 정적타입 언어라고 함. (ex 자바 같은언어)
반대 개념은 인터프리터 언어(런타임시에 언어를 분석, 파이썬 같은 애들) 

객체지향 프로그래밍과 함수형 프로그래밍의 개념을 지원.

여러 IDE를 지원(이클립스, 인텔리제이, VIM 등등)

스칼라는 JVM을 사용하기 때문에 자바가 설치 되어있어야 함.

스칼라는 확장 가능한(Scalable) 언어에서 유래 했다고 함.

스칼라 REPL(레플)
스칼라 shell에 스칼라 코드를 좀 더 쉽고 간결하게 작성할 수 있게 하는 강력한 기능.
REPL은 대화식 인터프리터라 부르는 Read-Eval-Print-Loop의 약자.

스칼라의 _(밑줄)은 자바에서 사용하는 별표(*), Asterisk와 비슷하게 와일드카드로 사용.
ex) import math._            // math 패키지의 모든것을 임포트 함.

스칼라의 본문 자체가 생성자이다.

정적(static)이라는 개념이 존재하지 않음.
대신 비슷한 역할을 할 수 있게 클래스와 같은 이름을 가지는 object 를 만들 수 있다.
이렇게 만들어진 object를 companion objec(동반 객체)라 하고
같은 이름을 가진 class를 companion class(동반 클래스) 라고 함.

트레이트
클래스의 동작을 확장하고 풍부하게 하는 트레이트(trait)를 제공함.
자바에서 인터페이스와 유사 함.

2장
스칼라 변수

가변변수(변경 O) : var 키워드 사용
불변변수(변경 X) : val 키워드 사용 

스칼라의 메소드, 클래스, 오브젝트
메소드 : def로 시작, 리턴은 return 키워드가 없으면 마지막 할당값을 리턴하게 설계.

객체(오브젝트) : 기존 OOP 객체와 약간 다른 의미를 가짐.
OOP에서 객체는 클래스의 인스턴스지만 스칼라에서는 객체로 선언된 모든 것을 인스턴스화 할수 없다.

object HelloWorld {
   def main(args : Array[String]){
      println("Hello World!!")
   }  
}

스칼라에서 오브젝트 키워드는 다음과 같은 두가지를 의미한다.
1. OOP처럼 오브젝트는 클래스의 인스턴스를 나타낼 수 있다.
2. 싱글톤(Singleton)이라는 매우 다른 타입의 인스턴스 객체를 나타내는 키워드.

컴패니언 오브젝트는 위에서 설명한 바가 있으며 자바로 따지면
싱글톤 소스에서 static으로 변수를 하나의 인스턴스로 만들어줘야하는 부분을
스칼라에서는 companion object로 대신 하였다.

참고 사이트 :   https://scalafiddle.io/https://docs.scala-lang.org/tour/tour-of-scala.html

 

 

ScalaFiddle

 

scalafiddle.io

 

 

반응형