자바 개발자를 위한 스칼라 프로그래밍
자바 개발자를 위한 스칼라 프로그래밍¶
1. 스칼라 맛보기¶
- 스칼라에서는 불변형 자료구조와 함수형 프로그래밍 구문뿐만 아니라 병렬 컬렉션에 대해서도 기본 지원
- 병렬로 실행되는 코드가 제대로 동작하게 만들때 자바보다 유리
- 클래스에서 생성자 파라미터 필드로 가지게 하려면 변수 이름 옆에
val,var써야함class Money(val amount: Int)
- 케이스 클래스는 new 키워드를 사용하지 않고도 인스턴스를 생성하는 팩토리 메서드 제공
- 스칼라에서느 클래스의 필드에 대한 스코프 default로 public
- 따라서 private으로 지정해 막던가 해라
- 여러개의 파라미터에 대해 값 지정할 때에는 파라미터 이름을 일일히 명시하는게 좋다
- 불변형 컬렉션(스칼라 기본)을 통해 덧셈, 업데이트, 삭제 등의 연산을 수행할 때 직접 수정하지 않고, 이러한 연산 적용한 컬렉션 새로 만들어 리턴
- 람다는 파라미터로 전달할 수 있는 함수
- 스칼라 컬렉션 기본으로 불변
- 멀티프로세서 아키텍처 환경에서 의도한 대로 코드 정확히 동작
- 병렬 처리 기본 지원
- 리스트 병합시 특이 코드 (모든 결과가 같다)
- Any
- AnyVal
- Int
- Byte
- Boolean
- Char
- AnyRef
- String
- Vector
- List
- AnyVal
- 리스트 순회시
_는 현재 원소를 뜻함 - 스코프 내에 있는 변수는 모두 스트링 안에 담아서 처리 가능
2. 코드 연동¶
- 생성자
- 보조 생성자는 반드시 this(...)로 기본 생성자를 호출할 것
- 마지막에 기본 생성자를 호출해 모든 파라미터 초기화 할 것
- trait
- 일부 메서드에 대해서 구현 코드 담을 수 있어 재사용성 좋음
- 클래스에 특정한 동작을 추가하고 싶다면 고려해볼것
- trait extends class 와 같은 문법도 가능 ㄷㄷ
- with으로 trait 나타내는데, <- 방향으로 호출됨
- object
- static 개념을 대신하여 사용
- 싱글톤 인스턴스 만들 수 있음
- 인터페이스/trait 상속 가능
- 컴패니언 오브젝트
- 클래스와 이름이 같은 싱글톤 오브젝트 at 동일한 패키지와 파일
- Java vs Scala 코딩 컨벤션
- 자바: 순차적 상태변경 명령형 스타일
- 스칼라: 표현식으로 코드 구성하는 선언적 방식