반응형
특정 기능을 캡슐화 하거나 작업이 완료되었을 때 실행할 콜백 코드를 구현한다.
- 전역 함수
- 내포된 함수
- 익명 함수
swift는 익명 함수 형태다. 표현식은 인라인 클로저 (Inline Closure)를 작성한다.
// 파라미터와 리턴형이 없은 경우
{ 실행할 코드 }
let clsr = { print("Hello World") }
clsr()
// Hello World
// 파라미터와 리턴형이 있는 경우
{ (파라미터 목록) -> 리턴형 in 실행할 코드 }
let clsr = { (str: String) -> String in
return "Hello, \(str)"
}
let result = clsr(" World")
print(result)
// Hello World
func funcClsr(_ c: (String) -> (String)) {
let result = c(" World")
print(result)
}
let clsr = { (str: String) -> String in
return "Hello \(str)"
}
funcClsr(clsr)
// Hello World
// list 정렬
let nums = [2, 1, 3, 5, 4]
let orderNums = nums.sorted(by: { (left: Int, right: Int) in
return left < right
})
print(orderNums)
// 1, 2, 3, 4, 5
// 위 정렬의 다른 표현
let orderNums = nums.sorted(by: <)
print(orderNums)
// 1, 2, 3, 4, 5
1. Trailing Closure
// Inline Closure
runClsr({ "Hello \($0)" })
// Trailing Closure
runClsr() { "Hello \($0)" }
runClsr { "Hello \($0)" }
2. 클로저에 값 할당 시점
var num = 0
let clsr = { print( "inside : \(num)") }
num += 10
print("outside : \(num)")
num += 10
clsr()
// outside : 10
// inside : 20
3. GCD , Enumeration 에서 클로저
// GCD
// 지정된 시간 이후 호출
DispatchQueue.main.asyncAfter(deadline: .nuw() + 3) {
print("Hello World")
}
// Enumeration
let list: NSArray = ["one", "two", "three"]
list.enumerateObjects(options: NSEnumerationOptions.concurrent) {
(element, index, stop) in
print(element)
}
반응형
'프로그램 개발해서 돈벌기 > iOS' 카테고리의 다른 글
[Swift] 샘플로 알아 보는 간단한 상속 개념 (0) | 2022.10.21 |
---|---|
[Swift] 튜플 (Tuple) (0) | 2022.10.13 |
[swift] 값 형식과 참조 형식 (0) | 2022.10.11 |
[swift] 옵셔널 (Optional) (0) | 2022.10.11 |
pod (0) | 2022.10.07 |
댓글