[swift] 클로저의 개념

클로저(closure)는 Swift에서 매우 중요한 개념 중 하나입니다. 클로저는 함수와 비슷한 역할을 수행하며, 코드 조각을 포함하고 전달할 수 있는 독립적인 블록입니다. 이를 통해 코드의 재사용성과 가독성을 향상시킬 수 있습니다.

클로저의 구문

{ (매개변수) -> 반환타입 in
    실행할 코드
}

위의 예시 코드는 클로저의 기본 구문을 보여줍니다. 중괄호로 감싸진 코드 블록이며, 매개변수와 반환타입이 존재할 수 있습니다. in 키워드는 매개변수와 실행 코드를 구분하는 역할을 합니다.

클로저의 사용 예시

클로저는 다양한 상황에서 사용될 수 있습니다. 예를 들어, 배열을 정렬하는 sorted(by:) 메서드의 인자로 클로저를 전달하여 정렬 기준을 정의할 수 있습니다.

let numbers = [5, 2, 10, 1, 8]
let sortedNumbers = numbers.sorted { (a, b) -> Bool in
    return a < b
}
print(sortedNumbers) // [1, 2, 5, 8, 10]

위의 코드에서 sorted(by:) 메서드에 전달되는 클로저는 두 개의 매개변수 ab를 받아서 a < b의 결과를 반환합니다. 따라서 숫자 배열이 오름차순으로 정렬됩니다.

단축 인자 이름 사용

클로저는 단축 인자 이름을 사용하여 더 간결하게 표현할 수 있습니다. 단축 인자 이름은 클로저 내부에서 매개변수를 참조할 때 사용되는 특별한 변수입니다.

let numbers = [5, 2, 10, 1, 8]
let sortedNumbers = numbers.sorted { $0 < $1 }
print(sortedNumbers) // [1, 2, 5, 8, 10]

위의 코드에서 $0$1은 첫 번째와 두 번째 매개변수를 나타냅니다. sorted(by:) 메서드는 클로저의 반환 값에 따라 배열을 정렬합니다.

클로저를 변수나 상수에 할당하기

클로저는 변수나 상수에 할당되어 나중에 사용될 수 있습니다.

let multiplication = { (a: Int, b: Int) -> Int in
    return a * b
}

let result = multiplication(5, 3)
print(result) // 15

위의 코드에서 multiplication이라는 상수에 클로저를 할당하고, 이후에 multiplication을 사용하여 계산을 수행할 수 있습니다.

결론

클로저는 Swift에서 강력한 기능 중 하나로, 함수와 비슷한 역할을 수행할 수 있습니다. 코드 재사용성과 가독성을 높이는 데에 큰 도움이 됩니다. 클로저를 잘 이해하고 유연하게 사용하여 Swift 언어의 장점을 최대한 활용해보세요.


참고 자료: