[swift] 클로저의 문법

클로저는 스위프트에서 강력한 기능을 제공하는 특별한 종류의 함수입니다. 클로저는 함수와 마찬가지로 코드 블록을 사용하여 기능을 수행하지만, 함수와는 다른 문법을 가지고 있습니다. 이번 포스트에서는 스위프트에서 클로저를 작성하는 방법에 대해 알아보겠습니다.

기본 문법

클로저는 아래와 같이 중괄호로 묶여있는 코드 블록입니다.

{ (매개변수) -> 리턴타입 in
    // 코드 실행
}

클로저는 매개변수와 리턴타입을 가질 수 있습니다. 매개변수의 타입과 리턴타입은 필요에 따라 생략할 수 있습니다.

매개변수와 리턴타입 생략

클로저의 매개변수와 리턴타입은 생략할 수 있습니다. 생략된 경우 암시적으로 $0, $1, $2와 같은 이름을 사용하여 매개변수를 참조할 수 있습니다. 리턴타입이 있는 클로저는 -> 리턴타입 부분을 생략할 수 있습니다.

예를 들어, 아래 코드는 매개변수와 리턴타입을 모두 포함한 클로저입니다.

let sum: (Int, Int) -> Int = { (a, b) -> Int in
    return a + b
}

이 코드를 매개변수와 리턴타입을 생략하여 간단하게 작성할 수 있습니다.

let sum = { $0 + $1 }

클로저의 사용

클로저는 함수와 마찬가지로 변수에 할당하거나 매개변수로 전달할 수 있습니다. 클로저는 일급 객체로 취급되기 때문에 자유롭게 다른 함수나 메서드에 전달할 수 있습니다.

func performOperation(a: Int, b: Int, operation: (Int, Int) -> Int) -> Int {
    return operation(a, b)
}

let result = performOperation(a: 5, b: 3, operation: { $0 + $1 })
print(result) // 8

위의 예제에서 performOperation 함수는 operation 매개변수로 클로저를 받아서 실행합니다. 클로저는 두 개의 정수를 받아서 더한 값을 리턴하는 역할을 합니다. 함수 호출 시 클로저를 인라인으로 정의할 수도 있습니다.

결론

스위프트에서 클로저는 강력하고 유용한 기능을 제공합니다. 클로저는 함수와 비슷한 문법을 가지고 있으며, 매개변수와 리턴타입을 생략하여 간결하게 작성할 수도 있습니다. 클로저를 잘 활용하면 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.