728x90
Swift 클로저 (Closures in Swift)
Swift 클로저는 코드 블록을 캡슐화하고 함수처럼 사용할 수 있는 강력한 기능입니다. 클로저는 매개변수, 반환값, 캡처된 값을 가질 수 있으며, 다양한 상황에서 코드를 간결하고 효율적으로 작성하는 데 도움이 됩니다.
1. 클로저 기본 구조
{ (parameters) -> returnType in
// 코드 블록
}
- {}: 클로저 블록을 나타냅니다.
- (parameters): 클로저의 매개변수 목록 (선택 사항)
- ->: 클로저의 반환값 타입 (선택 사항)
- // 코드 블록: 클로저 내에서 실행되는 코드
예시:
let greeting = { (name: String) in
print("안녕하세요, \(name)님!")
}
greeting(name: "지민") // "안녕하세요, 지민님!"
2. 간소화된 클로저 표현
- 생략 가능한 요소들을 생략하여 코드를 더욱 간결하게 작성할 수 있습니다.
예시:
let greeting = { name in
print("안녕하세요, \(name)님!")
}
greeting(name: "지민") // "안녕하세요, 지민님!"
- 매개변수 이름과 타입을 생략하고, $ 기호를 사용하여 매개변수에 직접 접근할 수 있습니다.
예시:
let greeting = { $0 in
print("안녕하세요, \($0)님!")
}
greeting(name: "지민") // "안녕하세요, 지민님!"
3. 클로저 매개변수 및 반환값
- 클로저는 여러 개의 매개변수를 가질 수 있으며, 매개변수에 기본값을 설정할 수 있습니다.
- 클로저는 값을 반환할 수 있으며, 여러 개의 값을 반환하려면 튜플을 사용할 수 있습니다.
예시:
let calculateSum = { (x: Int, y: Int) -> Int in
return x + y
}
let sum = calculateSum(x: 10, y: 20)
print(sum) // 30
4. 캡처된 값 (Captured Values)
- 클로저는 함수 실행 시점의 환경에서 값을 캡처할 수 있습니다.
- 캡처된 값은 클로저 내에서 사용되고 변경될 수 있으며, 함수가 종료된 후에도 유지됩니다.
예시:
var counter = 0
let countingClosure = {
counter += 1
print(counter)
}
countingClosure() // 1
countingClosure() // 2
countingClosure() // 3
5. 클로저 활용
- 클로저는 다양한 상황에서 활용될 수 있습니다.
- UI 이벤트 처리
- 비동기 작업 처리
- 알고리즘 구현
- 데이터 처리 및 변환
6. 참고 자료
- Apple 공식 문서 - 클로저 https://docs.swift.org/swift-book/documentation/the-swift-programming-language/functions/
- Swift 클로저 기초
'개발' 카테고리의 다른 글
Swift 구조체와 클래스 (Structures and Classes) (0) | 2024.07.05 |
---|---|
Swift 열거형 (Enumerations) (0) | 2024.07.05 |
Swift 함수 (Functions) (0) | 2024.07.05 |
Swift 제어 흐름 (Control Flow) (0) | 2024.07.05 |
Swift 콜렉션 타입 (Collection Types) (0) | 2024.07.05 |