본문 바로가기
Swift 기초 문법 👊

[Swift_문법] 고차함수(map, filter, reduce)에 대해 알아보자 _ 11

by 개발하는윤기사 2022. 8. 7.
728x90
반응형

안녕하세요! 이웃님들!!

 

오랜만에 스위프트 기초문법에 관한 내용을 가지고 돌아왔습니다!!

 

오늘은 <고차 함수>에 대해서 포스팅해보겠습니다! 바로 출발하시죠!

 

 

 

- 고차함수 -

 

  • 매개 변수로 함수를 받거나, return값으로 함수를 반환할 수 있는 함수를 뜻합니다!
    • Closure형태로 사용이 됩니다!
    • for _ in 문, if _ else 문의 연산을 보다 간편하고 깔끔하게 코드를 작성할 수 있습니다.
    • 대표적으로 map, filter, reduce가 있습니다!

 

1. map

 

  • 매개 변수로 전달된 함수를 실행 -> 그 return 값을 다시 반환해주는 함수
  • 새로운 데이터가 생성되어 반환되기 때문에, 기존 데이터는 변경되지 않습니다!

 

숫자 배열을 3의 배수로 변환하고 싶다면!

 

  1. 배열의 append 연산을 안해줘도 됩니다.
  2. 빈 배열을 미리 선언해 줄 필요도 없습니다!
  3. 5-6줄의 코드가 1-2줄로 줄일 수 있어 간결하고 편리하게 연산을 실행할 수 있습니다

 

예를 들어, Alamofire와 SwiftyJSON을 이용해 데이터 통신을 이용해 API를 불러온다고 하면, 아래와 같이 표현할 수 있습니다.

"item"에 접근해서 그 안에 "link"를 StringValue로 담는 과정입니다.

 

2. filter

  • 매개 변수로 전달된 함수를 실행 -> 특정 조건에 맞게 실행된 결과를 반환
  • Bool 타입을 return 값으로 가진다!
  • 기존 데이터 내부의 값을 특정 조건에 맞춰 걸러서 추출하는 역할.
  • 🍎 <$0, $1, $2, $3, ...> 은 클로저의 축약된 인자 이름으로 < 첫 번째 값, 두 번째 값, 세 번째 값... >을 의미합니다.

 

ex.1 ) 학점이 4.0 이상인 학생을 찾고 싶은 경우.

 

'newStudent', 'filterStudent1', 'filterStudent2'는 다 같은 결과 값을 가진다!!

 

 

ex.2 ) 영화 리스트에서 특정 감독의 영화를 고르고 싶은 경우

 

  • movieResult는 value 값이 "김한민" 감독인 영화의 key와 value값을 모두 출력해준다.
  • moiveResult2는 value 값이 "김한민" 감독인 영화의 제목(key) 값만 출력하기 위해 map을 사용하였다.

출력값

 

 

3. reduce

 

  • 기존 데이터를 하나로 합치는 기능을 실행한다!
  • 초기값 지정이 필요합니다. 만약 초기값이 없다면 0으로 설정된다.

 

ex) 11개 과목의 평균을 내고 싶은 경우, 11개 과목의 점수를 하나로 합쳐서 나눈다!

 

 

 

 

 

 

이상 이번 포스팅은 여기서 마치겠습니다!

 

고차함수에 관한 내용은 어려우니 한 번에 이해하기 어려울 겁니다!! 

 

개발하는 윤기사는 오늘도 빡코딩해서 여러분들에게 알찬 정보를 드리기 위해 노력하겠습니다!!

 

 

 

728x90
반응형