본문 바로가기

프로그래밍/scala

스칼라의 클래스와 객체

스칼라는 항상 java.lang과 scala 패키지의 멤버를 암시적으로 임포트한다. 즉, println 함수는 Predef의 println 함수를 호출하는 것이며, 이는 다시 Console.println을 호출하게 되어 최종 콘솔을 통해 문자열이 출려괴는 것이다. assert 역시 Predef.assert 함수가 호출되는 것이다.


클래스 혹은 동반객체는 스크립트가 아니다. 스크립트는 실행되는 동작(action)이 존재하는 경우를 말하고 클래스 및 객체는 정의(transform)만 존재하기 때문이다.

여기서 spark 언어와의 연관성이 생각났는데 transform 과 action 작업이 마치 클래스와 스크립트의 차이처럼 생각되기도 한다.


컴파일러를 시작할 때마다, 소스 코드를 처리하기도 전에, jar 파일의 내용을 검사하고 다른 초기화 작업을 수행하느라 많은 시간이 걸린다.

scalac Summer.scala CheckSumAccumulator.scala

그래서 fsc (fast scala compiler) 데몬이 있는데 fsc 명령어로 실행할 수 있다.

fsc Summer.scala CheckSumAccumulator.scala

fsc -shutdown

코드 수정 후 다음 실행 시에는 fsc 명령과 목록을 해당 컴파일 서버로 보내고 컴파일을 수행한다.

실제 2개 파일 컴파일 시에 10초 이상 소요되지만, fsc 명령은 초기에만 느리고 이후부터는 1초도 안 걸린다.


'프로그래밍 > scala' 카테고리의 다른 글

스칼라의 기본 타입과 연산  (0) 2016.01.16
스칼라 두 번째 걸음  (0) 2016.01.14
스칼라 첫걸음  (0) 2016.01.07