Skip to content

Latest commit

 

History

History
54 lines (47 loc) · 3.35 KB

File metadata and controls

54 lines (47 loc) · 3.35 KB

고차 함수 - map (150강)

[!Note] 고차함수 "함수"를 파라미터로 사용하거나, 함수실행의 결과를 "함수"로 리턴하는 함수

  • map
  • filter
  • reduce

[!NOTE] map 함수

  • 각 아이템을 매핑해서 변형할 때 사용
  • 기존의 배열의 각 아이템을 새롭게 매핑해서(매핑방식은 클로저가 제공) 새로운 배열로 리턴

고차함수 - filter / reduce (151강)

[!NOTE] filter 함수

  • 기존 배열 등의 각 아이템을 조건(조건은 클로저가 제공)을 확인 후, true 를 만족하는 아이템을 걸러내서 새로운 배열을 리턴
  • 각 아이템을 필터링해서, 걸러내서 새로운 배열을 만들 때 사용

[!NOTE] reduce 함수

  • 기존 배열 등의 각 아이템을 클로저가 제공하는 방식으로 결합해서 마지막 결과값을 리턴(초기값 제공할 필요)
  • 각 아이템을 결합해서 단 하나의 값으로 리턴

[!NOTE] 고차함수 활용하기 각 기본 고차함수(map, filter, reduce)의 의미를 정확하게 파악한 후 여러가지를 조합해서 다양하게 활용 가능

고차함수 - forEach / compactMap / flatMap (152강)

[!NOTE] forEach 함수 (map과는 다르게 배열로 반환하지 않음)

  • 기존 배열 등의 각 아이템을 활용해서 각 아이템별로 특정 작업(작업 방식은 클로저가 제공)을 실행 (리턴타입 없음)
  • 각 아이템을 활용해서 각각 특정 작업을 실행할 때 사용

[!NOTE] compactMap 함수

  • 기존 배열 등의 각 아이템을 새롭게 매핑해서(매핑방식은 클로저가 제공)변형하되, 옵셔널 요소는 제거하고, 새로운 배열을 리턴
  • (map + 옵셔널 제거)
  • 옵셔널은 빼고, 컴팩트하게
  • 옵셔널바인딩의 기능까지 내장

[!NOTE] flatMap 함수

  • 중첩된 배열의 각 배열을 새롭게 매핑해서(매핑방식은 클로저가 제공)
  • 내부 중첩된 배열을 제거하고 리턴
  • 중첩배열을 flat 하게 매핑

스위프트의 프로그래밍 패러다임과 함수형 프로그래밍 (153강)

[!NOTE] 함수형 프로그래밍(선언형 프로그래밍)

  • 함수를 이용해서 "사이드 이펙트가 없도록" 선언형으로 프로그래밍 하는 것(함수형 프로그래밍은 결과를 도출하기 위해 "함수"를 사용하는 것에 지나지 않음)
  • 산을 걸어서 올라가는 방법(명령형) vs 헬기로 정상에서 내리는 법(함수형)

옵셔널 타입의 응용 (154강)

[!NOTE] 옵셔널 체이닝(옵셔널 타입에 대해, 접근연산자 호출하는 방법)

  • 옵셔널체이닝의 결과는 항상 옵셔널이다.
  • 옵셔널체이닝에 값 중에서 하나라도 nil을 리턴한다면, 이어지는 표현식을 평가하지 않고 nil 을 리턴

[!Tip] 옵셔널 체이닝에서 함수의 실행은?

  • 옵셔널 타입에 접근해서 사용하는 함수는 (앞의 타입을 벗기지 않아도 사용가능 함. 다만, 함수자체가 옵셔널 타입은 아니기 때문에 함수를 벗겨서 사용할 필요 없음)
  • 타입에 값이 있으면 함수 실행
  • 없으면 nil
  • 함수가 리턴형이 있는 경우
  • 타입에 값이 있으면 옵셔널 리턴 타입으로 반환(원래 리턴형이 옵셔널이 아니더라도)
  • 타입에 값이 없으면 nil로 반환

메모리 그림 중요