함수 호출을 연결하는 일반적인 방법이지만, 가독성이 좋지 않아 ‘크리스마스 트리 들여쓰기’라고 불리기도 한다. 이 방식에서는 함수의 순서가 뒤바뀌어 가장 먼저 호출될 함수(extractListData)를 가장 안쪽에 적어야 한다.
코틀린 let 함수를 사용하면 원하는 데이터에 대해 함수를 호출할 수 있다(부록 B 영역 함수 참고). 이를 사용하면 각 함수가 이전 함수의 출력을 입력으로 받는 방식으로 함수 호출을 연쇄하는 코드를 훨씬 더 읽기 쉽게 만들 수 있다. 다음 코드는 ‘크리스마스 트리’ 코드와 동일하지만 더 읽기 쉽고 우리의 디자인 다이어그램에 더 가깝다.
fun getToDoList(request: Request): Response =
request
.let(::extractListData)
.let(::fetchListContent)
.let(::renderHtml)
.let(::createResponse)
함수 순서가 이전 예제와 반대라는 점에 주의하자.
함수 참조를 사용하는 let 함수는 리눅스 셸의 | 연산자나 자바스크립트 및 F#의 |> 연산자와 비슷하게 작동한다.