@autoclosure 키워드는 함수 호출 시 해당 파라미터의 값을 클로저로 감싸서 전달하는 것을 의미한다.

func normal(_ closure: () -> Void) {
  closure()
}

위 코드에서 normal은 일반적인 클로저를 파라미터로 전달받는다. 이 함수를 호출할 때 클로저 파라미터를 대괄호로 묶어야 한다.

normal({ print("Normal closure") })

하지만 @autoclosure를 사용한다면 대괄호로 묶지 않고 일반 표현식을 사용할 수 있다.

func autoclosure(_ closure: @autoclosure () -> Void) {
  closure()
}

autoclosure(print("Auto closure"))