고차함수 map!

2022. 9. 7. 00:59swift

고차 함수의 핵심은 함수인데 매개변수인데 클로저로 받는다

그리고 매개변수를 받은 클로저를 반환하는 식으로 값을 변화시키는 식

 

let numberList: [Int] = [1, 2, 3, 4]

var returnArray: [Int] = []

 

for number in numberList {

  returnArray.append(number * 2)

}

print(returnArray) //[2, 4, 6, 8]

 

이러한 부분에 map을 쓰게 되면.

let returnArray = numberList.map({ (number : Int) -> Int in

    return number * 2 }) //[2,4,6,8] 

위와 똑같이 나타난다.

map을 사용하여  - 초기 빈 배열을 생성할 필요가없다

-시간을 절약할 수 있다.

 

map({ (number : Int) -> Int in number * 2 }) //return 생략. 단, 클로저 내부의 코드가 두 줄 이상이라면 return을 생략할 수 없다

map({ (number) -> Int in number * 2 }) //원 타입 생략

map({ (number) -> in number * 2 }) //반환 타입 생략

map({ $0 * 2 }) //매개변수 생략. 이때 $0은 1번째 매개변수라는 의미

map{ $0 * 2 } //후행 클로저. 괄호 생략 후 클로저만 뒤따르게 된다.

 

이런 식으로  map의 고차 함수를 사용하여 코드를 간소화할 수 있다.

하지만 과한 생략 시 가독성이 떨어지므로 이해하기가 어려울 수 도 있다.