클로저(Closure)
일회용 함수를 작성할 수 있는 구문. 일회용 함수란 한번만 사용할 구문들의 집합이면서 그 형식은 함수로 작성되어야하는 제약 조건이 있을 때 만들어 사용 할 수 있는 함수이다.
일회용 함수는 굳이 함수의 이름을 작성할 필요없이 생략된다는 점에서 익명 함수라고 부르기도 한다.
objective -c의 블록과 같은 개념.
또는 자바 파이썬의 람다함수.
표현식
func 키워드를 생략하며 함수의 이름 또한 생략한다.
{ (매개변수) -> 반환타입 in
구문
}
{ ( ) -> () in
print("i am closure");
}
{ () -> Void in
print("i am closure")
}
//상수나 변수에 클로저표현식을 할당 후 실행
let f = { () -> Void in
print("i am closure");
}
f();
//상수나 변수에 할당 하지 않고 실행
({ (s1:Int s2:String) -> void in
print("\(s1), \(s2)")
})(1,"closure")
일반 함수를 closure로 변경하는 예제
let value = [1, 9, 5, 7, 3, 2];
//내림차순 정렬
func order(s1:Int, s2:Int) -> Bool {
if s1 > s2{
return true;
}else{
return false;
}
}
value.sorted(by:(order));
//closure 식으로 변환
value.sort( { (s1:Int, s2:Int) -> Bool in
if s1> s2{
return true;
}else{
return false;
}
});
//closure식을 한줄로 변환
sorted(by: { (s1:Int, s2:Int) -> Bool in return s1 > s2 });
//비교구문은 자동으로 return형을 Bool형으로 간주하기때문에 bool 생략
'swift 공부' 카테고리의 다른 글
| [swift] NavigationController Push View Animation 효과주기 (0) | 2017.08.22 |
|---|---|
| [arcjeen] 6. swift 구조체 클래스 (0) | 2017.03.22 |
| [arcjeen] 4. swift 함수 (0) | 2017.03.21 |
| [arcjeen] 3.swift Optional (0) | 2017.03.21 |
| [arcjeen] 2.swift 자료형 2 (튜플, Dictionary) (0) | 2017.03.21 |
WRITTEN BY

- arcjeen
ios 관련문의 slimforce@naver.com




