더북(TheBook)
typealias Step = Actions.() -> Unit

StepAction을 수신 객체로 받아서 Unit을 반환하는 함수 타입이다(부록 B 확장 함수 참고). 일반 함수 대신 확장 함수를 사용하는 이유는 단계 내부에서 Action의 메서드를 더 쉽게 호출할 수 있기 때문이다.

그런 다음 Actions 인터페이스의 runScenario 메서드가 가변적인 개수의 단계를 취하도록 변경해야 한다. 이제 ApplicationForAT의 구현은 다음과 같다.

fun runScenario(vararg steps: Step) {
    server.use {
        steps.onEach { step -> step(this) }
    }
}

이런 방식으로 각 단계를 실행하도록 Actions 인터페이스에게 파라미터로 전달한다3.

액터로 돌아가서 단계를 새로운 함수로 반환하는 방법을 살펴보자.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.