Chapter 1. 기본기
스칼라 인터프리터
값과 변수 선언하기
자주 사용되는 타입
산술과 연산자 오버로딩
함수와 메소드 호출
apply 메소드
스칼라독(Scaladoc)
연습문제
Chapter 2. 제어 구조와 함수
조건식
문 종료
블록식과 할당
입력과 출력
루프
고급 for 루프와 for 컴프리헨션
함수
기본 인자와 이름 인자
가변 인자
프로시저
레이지 값
예외
연습문제
Chapter 3. 배열 사용하기
고정 길이 배열
가변 길이 배열: 배열 버퍼
배열과 배열 버퍼 방문
배열 변환
일반 알고리즘
스칼라독 해독
다차원 배열
자바 연동
연습문제
Chapter 4. 맵과 튜플
맵 생성
맵 값 접근
맵 값 갱신
맵 반복
정렬 맵
자바 연동
튜플
지핑(Zipping)
연습문제
Chapter 5. 클래스
간단한 클래스와 인자 없는 메소드
게터와 세터가 있는 프로퍼티
게터만 있는 프로퍼티
오브젝트-비공개 필드
빈 프로퍼티
보조 생성자
기본 생성자
중첩 클래스
연습문제
Chapter 6. 오브젝트
싱글톤
컴패니언 오브젝트
클래스나 트레이트를 확장하는 오브젝트
apply 메소드
애플리케이션 오브젝트
이뉴머레이션
연습문제
Chapter 7. 패키지와 임포트
패키지
스코프 규칙
체인 패키지 구문
파일 시작 표기법
패키지 오브젝트
패키지 가시성
임포트
스코프는 어디든 올 수 있다.
멤버 이름 변경 및 숨기기
암묵적 임포트
연습문제
Chapter 8. 상속
클래스 확장하기
메소드 오버라이드하기
타입 검사와 캐스트
보호 필드와 메소드
슈퍼클래스 생성
필드 오버라이드하기
익명 서브클래스
추상 클래스
추상 필드
생성 순서와 조기 정의
스칼라 상속 계층
오브젝트 등식
연습문제
Chapter 9. 파일과 정규 표현식
줄 읽기
문자열 읽기
토큰과 숫자 읽기
URL과 다른 소스에서 읽기
바이너리 파일 읽기
텍스트 파일 쓰기
디렉토리 방문
직렬화
프로세스 제어
정규 표현식
정규 표현식 그룹
연습문제
Chapter 10. 트레이트
왜 다중 상속을 사용하지 않는가?
인터페이스로서 트레이트
구체적 구현이 있는 트레이트
트레이트가 있는 오브젝트
레이어드 트레이트
트레이트의 추상 메소드 오버라이드하기
리치 인터페이스를 위한 트레이트
트레이트의 구체 필드
트레이트의 추상 필드
트레이트 생성 순서
트레이드 필드 초기화
클래스를 확장한 트레이트
셀프 타입
내부에서 일어나는 일
연습문제
Chapter 11. 연산자
인식자
삽입 연산자
단항 연산자
할당 연산자
우선순위
결합성
apply와 update 메소드
추출자
인자 하나 혹은 인자 없는 추출자
unapplySeq 메소드
연습문제
Chapter 12. 고차함수
값으로서 함수
익명 함수
함수 인자를 받는 함수
인자 추론
유용한 고차 함수
클로저
SAM 변환
커링
제어 추상화
return 표현식
연습문제
Chapter 13. 콜렉션
중요 콜렉션 트레이트
수정 가능한 콜렉션과 수정 불가능한 콜렉션
시퀀스
리스트
수정 가능한 리스트
집합
원소들을 추가 혹은 제거하는 연산자
공통 메소드
함수 매핑
리듀싱, 폴딩, 스캐닝
지핑
이터레이터
스트림
레이지 뷰
자바 콜렉션과의 상호 호환
쓰레드세이프 콜렉션
병렬 콜렉션
연습문제
Chapter 14. 패턴 매칭과 케이스 클래스
더 나은 switch
가드
패턴에서 변수
타입 패턴
배열, 리스트, 튜플을 매치하기
추출자
변수 선언에서 패턴
for 표현식에서 패턴
케이스 클래스
copy 메소드와 이름 있는 인자
case 절에서 중위 표기법
중첩 구조 매치하기
케이스 클래스는 나쁜가?
잠긴 클래스
이뉴머레이션 흉내내기
Option 타입
부분 함수
연습문제
Chapter 15. 어노테이션
어노테이션은 무엇인가?
무엇이 어노테이트될 수 있나?
어노테이션 인자
어노테이션 구현
자바 기능을 위한 어노테이션
최적화를 위한 어노테이션
오류와 경고를 위한 어노테이션
연습문제
Chapter 16. XML 처리
XML 리터럴
XML 노드
엘리먼트 어트리뷰트
내재 표현식
어트리뷰트 내의 표현식
흔히 사용하지 않는 노드 타입
XPath와 유사한 표현식
패턴 매칭
엘리먼트와 어트리뷰트 수정
XML 변환
로드와 세이브
네임스페이스
연습문제
Chapter 17. 타입 인자
제네릭 클래스
제네릭 함수
타입 변수에 대한 바운드
뷰 바운드
콘텍스트 바운드
매니페스트 콘텍스트 바운드
다중 바운드
타입 제한자
베리언스
코베리언트와 콘트라베리언트 위치
오브젝트는 제네릭일 수 없다
와일드카드
연습문제
Chapter 18. 고급 타입
싱글톤 타입
타입 프로젝션
패스
타입 별칭
구조 타입
복합 타입
중위 타입
이그지스텐셜 타입
스칼라 타입 시스템
셀프 타입
의존성 삽입
추상 타입
가족 다형성
고차 타입
연습문제
Chapter 19. 파싱
문법
파서 연산 병합
파서 결과 변환
토큰 버리기
파스 트리 생성하기
좌측 재귀 피하기
추가 컴비네이터들
백트래킹 피하기
팩랙 파서
파서란 정확히 무엇인가?
정규식 파서
토큰 기반 파서
오류 처리
연습문제
Chapter 20. 액터
액터 생성 및 시작
메시지 송신
메시지 수신
다른 액터들에 메시지 보내기
채널
동기 메시지와 퓨처
쓰레드 공유
액터 생명 주기
액터 연결
액터로 설계하기
연습문제
Chapter 21. 암묵
암묵 변환
기존 라이브러리를 강화를 위해 암묵 사용하기
암묵 임포트하기
암묵 변환 규칙
암묵 인자
암묵 인자가 있는 암묵 변환
콘텍스트 바운드
증거
@implicitNotFound 어노테이션
CanBuildFrom 풀이
연습문제
Chapter 22. 제한된 컨티뉴에이션
컨티뉴에이션 캡처와 호출
구멍이 있는 계산
reset과 shift의 제어 흐름
reset 표현식의 값
reset와 shift 표현식의 타입
CPS 어노테이션
재귀 방문을 이터레이션으로 변환
제어 역전 되돌리기
CPS 변환
중첩 제어 콘텍스트 변환
연습문제