5장에서 연산자 오버로딩, 타입 안전 빌더와 Kotlin에서 DSL을 만드는 법에 대해 공부했다.
operaotr 수정자를 통해 연산자들의 동작을 재정의할 수 있는 기능이다.invoke, 인덱싱된 접근을 가능하게 해주는 [] 연산자가 있다.with, buildString, apply 처럼 리시버가 있는 명명된 함수타입을 사용한 빌더? 이다.with은 리시버와 그 리시버의 함수들을 인자로 받아서 전달받은 함수들을 호출하고 해당 함수가 반환한 값을 반환한다.buildString은 StringBuilder의 함수들을 인자로 받아서 호출한 후 결과로 생성된 String을 반환한다.apply는 확장 함수이며, 리시버의 함수들을 인자로 받아서 해당 함수들이 호출된 리시버 타입 객체를 반환한다.@DslMarker 어노테이션과 중위 함수, 연산자 오버로딩, 타입 안전 빌더를 통해 DSL을 간단하게 생성할 수 있다.