[iOS] App Development

[예제로 쉽게 이해해보기!] 클로저 : Closures / 고차함수 / MAP

ddgoori 2020. 10. 21. 10:44

[예제로 쉽게 이해해보기!] 클로저 : 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/

 

Swift의 클로저 및 고차 함수 이해하기

Swift의 클로저와 고차 함수 개념을 쉽고 명확하게 짚어 드립니다.

academy.realm.io

 

yagom.github.io/swift_basic/contents/12_closure/

 

클로저

야곰의 스위프트 기본 문법 강좌입니다.

yagom.github.io