글
12. Swift 클로저(Closure)
Swfit
2017. 8. 4. 11:54
12. Swift 클로저(Closure)
- 클로저는 두 가지로 이루어진 객체이다. 하나는 내부 함수이며, 또 다른 하나는 내부 함수가 만들어진 주변 환경이다.
- 클로저는 외부 함수 내에서 내부 함수를 반환하고, 내부 함수가 외부 함수의 징역 변수나 상수를 참조할 때 만들어 진다.
- 클로저란 내부 함수와 내부 함수에 영향을 미치는 주변환경(Context)을 모두 포함한 객체이다
func basic(param : Int) -> (Int) -> Int{
//—————클로저 범위
let value = param + 20
func append(add : Int) -> INT {
return value + add
}
//———— 클로저 범위
return append
}
- 전역 함수 - 이름이 있으며, 주변 환경에서 캡쳐할 어떤 값도 없는 클로저
- 중첩 함수 - 이름이 있으며 자신을 둘러싼 함수로부터 값을 캡쳐할 수 있는 클로저
- 클로저 표현식 - 이름이 없으며 주변 환경으로부터 값을 캡쳐할 수 있는 경량 문법으로 작성된 클로저
//클로저 표현식
{(매개변수) -> 반환타입 in
실행할 구문
}
###################
let f = { () -> Void in
print(“클로저가 실행됩니다”)
}
f()
//클로저가 실행됩니다
###################
var value = [1, 9, 5, 7, 3, 2]
func order(s1:Int , s2:Int) -> Bool {
if s1 > s2 {
return true
} else {
return false
}
}
value.sort(by: order) // [9, 7, 5, 3, 2, 1]
*클로저 표현식으로 변경
{
(s1:Int, s2:Int) -> Bool in
if s1 > s2 {
return true
} else {
return false
}
}
value.sort(by:{s1:Int,s2:Int) ->Bool in return s1 > s2})
'Swfit' 카테고리의 다른 글
14. 딕셔너리 (Dictionary) (0) | 2017.08.04 |
---|---|
13. Swift 구조체와 클래스 (0) | 2017.08.04 |
11. Swift 함수의 중첩 (0) | 2017.08.04 |
10. Swift 일급 객체로서의 함수 (0) | 2017.08.04 |
9. Swift 매개변수 (1) | 2017.08.04 |