클로저 (Closures)
클로저는 함수처럼 매개변수를 받고 값을 반환할 수 있으며, 일급 객체로서 변수에 저장하거나 인자로 전달할 수 있다.
클로저를 사용하면 길어질 수 있는 코드를 간결하게 해 가독성을 높일 수 있다.
// 클로저 표현식
let greet = { (name: String) -> String in
return "안녕하세요, \(name) 입니다."
}
// 클로저 호출
let myName = greet("철수")
print(myName) // 안녕하세요, 철수 입니다.
클로저 간결한 표현 예시
// 매개변수 타입 생략 (타입 추론)
let add = { (a, b) -> Int in
return a + b
}
// 반환 타입 생략 (타입 추론)
let add = { (a: Int, b: Int) in
return a + b
}
// 전체 타입을 지정해 매개변수 타입 , 반환 타입 생략 (타입 추론)
let add: (Int, Int) -> Int = { (a, b) in
return a + b
}
// 리턴 생략
let add: (Int, Int) -> Int = { (a, b) in
a + b
}
// 단축 인자를 사용해 매개변수 이름 생략
let add: (Int, Int) -> Int = { $0 + $1 }
후행 클로저 (Trailing Closure)
함수의 마지막 인자로 클로저를 사용할 때, 그 클로저를 함수 호출 괄호의 밖에 정의할 수 있다.
// 클로저를 인자로 받을 수 있게끔 타입 정의한 함수
func addition(a: Int, b: Int, operation: (Int, Int) -> Int) {
let result = operation(a, b)
print("\(result)")
}
// 후행 클로저, 클로저를 마지막 인자로 사용 (별(*) 표시된 부분이 후행 클로저)
addition(a: 3, b: 5) * { a, b in a + b } *
// 단축 인자 사용 했을때
addition(a: 3, b: 5, operation: { $0 + $1 })
알게 모르게 가장 많이 사용하는 클로저
아 맞다, 이게 클로저였지 라고 새삼스레 깨닫는 경우를 느낀 적이 많다.
728x90
'Swift > 기초' 카테고리의 다른 글
Swift 기초 다지기 - 클래스 (Class) (0) | 2024.10.07 |
---|---|
Swift 기초 다지기 - 열거형 (Enum) (2) | 2024.10.06 |
Swift 기초 다지기 - 함수 (Functions) (1) | 2024.10.03 |
Swift 기초 다지기 - 컬렉션 타입 ( Array, Dictionary, Set ) (0) | 2024.10.02 |
Swift 기초 다지기 - 조건문, 반복문 (1) | 2024.09.30 |
댓글