[예제로 쉽게 이해해보기!] 클로저 : Closures / 고차함수 / MAP
import UIKit
let array = [6,2,3,5,1]
func addOne(n1: Int) -> Int {
return n1 + 1
}
array.map(addOne) //[7,3,4,6,2]
// 고차함수 map으로 addOne함수를 사용해서 array 배열의 각 원소에 addOne함수를 적용시켜서 기존에 있던 array의 원소를 인자로 넣고 거기에 1을 더해서 반환하는 작업을 한 것임
- map은 컬렉션 내부의 기존 데이터를 변형해서 새로운 컬렉션을 생성하는 함수입니다.
- 내부의 자료에 변형을 가하기 위해 함수의 각 요소에 함수를 적용해서 새로운 컬렉션을 만들어줍니다.
- 잘 사용하면 for 문을 사용하지 않고도 작업할 수 있습니다.
기존의 Function은 클로저의 한 형태로 이름있는 클로저임!
그렇다면 기존의 function을 클로저의 또 다른 형태로 변환할 수 있다는 것!
아래의 예제를 보실까나용?
import UIKit
let array = [6,2,3,5,1]
func addOne(n1: Int) -> Int {
return n1 + 1
}
array.map(addOne) //[7,3,4,6,2]
// map은 컬렉션 내부의 기존 데이터를 변형해서 새로운 컬렉션을 생성하는 함수입니다. 내부의 자료에 변형을 가하기 위해 함수의 각 요소에 함수를 적용해서 새로운 컬렉션을 만들어줍니다. 잘 사용하면 for 문을 사용하지 않고도 작업할 수 있습니다.
// Closure로 변환해보기
// 1차 변환
{
(n1: Int) -> Int in
return n1 + 1
}
// 2차 변환
{ $0 + 1 }
// 결과 : print 찍어보면 위와 똑같이 나온다는 것
array.map( {$0 + 1} ) //[7,3,4,6,2]
//괄호 생략 가능
array.map{$0 + 1} //[7,3,4,6,2]
단축인자 이용
Array 배열을 스트링으로 변환하는 것도 단순하다
import UIKit
let array = [6,2,3,5,1]
let stringArray = array.map{"\($0)"}
print(stringArray) //["6", "2", "3", "5", "1"]
* 참고 문서
academy.realm.io/kr/posts/closure-and-higher-order-functions-of-swift/
yagom.github.io/swift_basic/contents/12_closure/
'[iOS] App Development' 카테고리의 다른 글
Optional Binding : if let 구문 (0) | 2020.11.25 |
---|---|
구조체 / 구조체 인스턴스 생성 / 구조체를 담은 배열 (0) | 2020.11.12 |
SWIFT GRAMMER (0) | 2020.10.20 |
OpenWeather API and URL Parameters (0) | 2020.10.20 |
Delegate / Protocol (2) 복습 (0) | 2020.10.20 |