addition이라는 클로저는 두 개의 정수를 인자로 받고, 그 합을 반환하는 클로저입니다.let addition: (Int, Int) -> Int = { (a, b) in
return a + b
}
let result = addition(3, 5) // 결과: 8
$0과 $1을 사용하여 두 숫자를 곱한 값을 반환합니다.let multiply: (Int, Int) -> Int = { $0 * $1 }
let result = multiply(3, 5) // 결과: 15
division 변수에 클로저를 할당하고, 두 개의 실수를 나누어주는 클로저를 정의합니다.let division = { (a: Double, b: Double) -> Double in
return a / b
}
let result = division(10.0, 2.0) // 결과: 5.0
performOperation 함수는 두 정수와 클로저를 인자로 받아서 클로저를 실행하여 결과를 반환합니다.func performOperation(a: Int, b: Int, operation: (Int, Int) -> Int) -> Int {
return operation(a, b)
}
let result = performOperation(a: 10, b: 5, operation: { (a, b) in a - b })
// 결과: 5
sorted 메서드는 클로저를 사용하여 배열의 요소를 정렬합니다. 이 경우 $0과 $1은 배열 요소를 나타내며, 클로저 내부의 비교 연산자는 요소를 비교하여 정렬합니다.let numbers = [5, 2, 8, 1, 7]
let sortedNumbers = numbers.sorted { $0 < $1 }
print(sortedNumbers) // 출력: [1, 2, 5, 7, 8]
filter 메서드는 클로저를 사용하여 조건에 맞는 요소만 추출합니다. 이 경우 $0.count는 각 문자열의 길이를 나타내며, 클로저 내부의 조건에 따라 필터링이 이루어집니다.let names = ["Alice", "Bob", "Charlie", "David", "Eve"]
let filteredNames = names.filter { $0.count <= 3 }
print(filteredNames) // 출력: ["Bob", "Eve"]
URLSession을 사용하여 비동기로 웹 페이지 데이터를 가져오는 코드입니다. 클로저는 데이터 수신 또는 에러 처리를 담당하며, 비동기 작업이 완료될 때 클로저가 실행됩니다.import Foundation
let task = URLSession.shared.dataTask(with: URL(string: "https://www.example.com")!) { data, response, error in
if let data = data {
print("Received data: \(data)")
} else if let error = error {
print("Error: \(error)")
}
}
task.resume()
클로저는 Swift에서 강력한 기능 중 하나로, 코드의 모듈화, 비동기 작업, 데이터 처리, 정렬, 필터링, 네트워킹 등 다양한 상황에서 활용됩니다. 함수형 프로그래밍의 핵심 개념 중 하나인 클로저를 활용하여 코드를 간결하게 작성하고 더 유연한 프로그래밍을 할 수 있습니다.