Swift3(스위프트3)

swift3 스위프트3 고차함수

알통몬_ 2017. 7. 17. 11:34
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


이번 포스팅에서는 고차 함수에 대해 공부합니다.


고차 함수 : 전달 인자로 함수를 전달 받거나, 함수 실행의 결과로 함수를 반환하는 함수를 말합니다.


swift3 에서는 map, filter, reduce 고차 함수를 기본으로 제공합니다.


- map : 컨테이너 내부의 기존 데이터를 변형해 새로운 컨테이너를 생성합니다.

let num : [Int] = [10, 20, 30, 40, 50]

예제) for in 문과 비교

var twoTimesNum : [Int]

1. for in 문 사용

for i in num {

   twoTimesNum.append( i*2 )

}


2. map 사용

twoTimesNum = num.map( { (number : Int) -> Int in

   return number * 2

})

후행 클로저 사용으로 간단히 표현할 수 도 있습니다.

twoTimesNum = num.map { $0 * 2 }


- filter : 컨터이너 내부의 값을 걸러서 새로운 컨테이너로 호출

예제) for in 문과 비교

var filters : [Int] = [Int]()

1. for in 문 사용

for i in num {

   if i % 2 == 0 {

      return filters.append( i )

   }

}


2. filter 사용

let evens : [Int] = num.filter {

   (number : Int) -> Bool in

      return number % 2 == 0

}

마찬가지로 후행 클로저 사용으로 간단히 표현 가능합니다.

let odds : [Int] = num.filter { $0 %2 == 0 }


- reduce : 컨테이너 내부의 콘텐츠를 하나로 통합합니다.

let nums : [Int] = [ 2, 5, 9 ]

var result : [Int] = 0

1. for in 문 사용

for i in nums {

   result += i

}


2. reduce 사용

let sum : Int = nums.reduce(초기값, {

   ( i : Int, j : Int) -> Int in

      return i + j


이상입니다.


반응형