[swift] 클로저 반환 타입 추론

스위프트에서는 클로저의 반환 타입을 명시적으로 쓰지 않아도 타입 추론을 통해 반환 타입을 결정할 수 있습니다. 이는 코드를 간결하게 작성할 수 있도록 도와주며, 가독성을 높여줍니다.

타입 추론을 사용하는 경우

스위프트 컴파일러는 클로저의 구현을 분석하여 반환 타입을 추론합니다. 따라서 아래와 같이 리턴 타입을 명시하지 않아도 컴파일러가 타입을 추론합니다.

let numbers = [1, 2, 3, 4, 5]

let mappedNumbers = numbers.map({ number in
    return number * 2
})

// 클로저의 반환 타입이 Int로 추론됨

명시적으로 반환 타입을 사용하는 경우

클로저의 반환 타입을 명시적으로 사용하는 것이 유용한 경우도 있습니다. 아래와 같이 클로저 내에서 -> 를 사용하여 반환 타입을 명시적으로 표현할 수 있습니다.

let numbers = [1, 2, 3, 4, 5]

let mappedNumbers: [Int] = numbers.map({ number in
    return number * 2
})

이를 통해 명시적으로 반환 타입을 지정함으로써 코드의 가독성을 높일 수 있으며, 잠재적인 버그를 방지할 수 있습니다.

결론

스위프트는 클로저의 반환 타입을 추론할 수 있기 때문에 코드를 간결하게 작성할 수 있습니다. 하지만 가독성을 높이고 명시적인 코드를 작성하기 위해서는 필요에 따라 반환 타입을 명시적으로 사용할 수 있습니다.

이는 개발자가 반환 타입을 추론하기 쉽게 하며, 코드를 이해하기 쉽도록 도와줍니다.

참고 자료: 스위프트 공식 문서