1. 클로저
•클로저는 실행가능한 코드 블럭
•함수와 다르게 이름정의는 필요하지는 않지만, 매개변수 전달과 반환 값이 존재 할 수 있다는 점이 동일
•함수는 이름이 있는 클로저
•일급객체로 전달인자, 변수, 상수 등에 저장 및 전달이 가능
2. 기본 클로저 문법
•클로저는 중괄호 {}로 감싸져있음
•괄호를 이용해 파라미터를 정의
•-> 을 이용해 반환 타입 명시
•"in"키워드를 이용해 실행 코드와 분리
1 2 3 | { (매개변수 목록) -> 반환타입 in /* 실행 코드 */ } | cs |
3. 클로저 사용
1 2 3 4 5 6 7 | // sum이라는 상수에 클로저를 할당 let sum: (Int, Int) -> Int = { (a: Int, b: Int) in return a + b } let sumResult: Int = sum(1, 2) print(sumResult) // 3 | cs |
4. 함수의 전달인자로서 클로저
•클로저는 주로 함수의 전달인자로 많이 사용됨
•함수 내부에서 원하는 코드블럭을 실행할 수 있음
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | let add: (Int, Int) -> Int add = { (a: Int, b: Int) in return a + b } let substract: (Int, Int) -> Int substract = { (a: Int, b: Int) in return a - b } let divide: (Int, Int) -> Int divide = { (a: Int, b: Int) in return a / b } func calculate (a: Int, b: Int, method: (Int, Int) -> Int) -> Int { return method(a, b) } var calculated: Int calculated = calculate(a: 50, b: 10, method: add) print(calculated) // 60 calculated = calculate(a: 50, b: 10, method: substract) print(calculated) // 40 calculated = calculate(a: 50, b: 10, method: divide) print(calculated) // 5 // 따로 클로저를 상수/변수에 넣어 전달하지 않고, // 함수를 ㅗ출할 때 클로저를 작성하여 전달할 수도 있음 calculated = calculate(a: 50, b: 10, method: { (left: Int, right: Int) -> Int in return left * right }) print(calculated) // 500 | cs |
제 나름대로 생각을 정리하며 포스팅합니다.
정보전달에 있어 차질이 생기는 것을 우려해 나름대로 확실하게 검증을 하고 포스팅하려고 노력합니다.
본 포스팅에 잘못된 정보가 있거나 수정해야할 내용이 있다면 댓글 또는 아래의 이메일로 알려주시면 감사하겠습니다.
E-mail : silent_lhr@naver.com
공감은 로그인이 필요없습니다.
공감은 저에게 포스팅을 이어나갈 수 있는 힘이 됩니다.
'프로그래밍 [KOR] > Swift' 카테고리의 다른 글
Swift의 프로퍼티 (0) | 2018.10.11 |
---|---|
Swift의 클로저 고급 (0) | 2018.10.11 |
Swift의 값/참조 타입 (0) | 2018.10.10 |
Swift의 열거형 (0) | 2018.10.08 |
Swift의 클래스 (0) | 2018.10.08 |