함수로 표현한 단계
어떤 파라미터를 받는 메서드를 사용하는 대신, 같은 파라미터를 받는 함수를 반환하는 새로운 함수를 만들 수 있다. 이렇게 하면 파라미터를 명시적으로 전달할 필요가 없다.
무슨 말인지 헷갈리는가? 실제로 코드가 어떻게 작동하는지 살펴보자.
먼저 액터가 사용할 수 있는 모든 가능한 액션이 포함된 인터페이스를 추출해보자.
interface Actions{
fun getToDoList(user: String, listName: String): ToDoList?
}
인터페이스는 널이 될 수 있는(타입 뒤의 물음표가 이를 표현함) ToDoList를 반환한다는 점에 유의하라. 널 가능성에 대해서는 4장 널의 문제를 참고하라.
또 ApplicationForAT가 이제 Actions를 구현해야 한다.
그런 다음 함수 타입에 대한 타입 별명을 정의한다(부록 B 타입 별명 참고). 타입 별명은 복잡한 타입을 사용하는 경우에도 코드를 읽고 쓰기 쉽게 유지해주는 편리한 코틀린 기능이다.