Swift의 고차함수

June·2023년 2월 8일
1

Swift

목록 보기
2/18
post-thumbnail

Swift에서 함수는 일급 객체로, 함수를 다른 함수의 전달 인자로 사용하는 것이 가능하다.

Map

  • 자신을 호출할 때 매개변수로 전달된 함수를 실행해 그 결과값을 다시 반환해주는 함수
  • Swift의 Collection, Sequence 프로토콜을 따르면 가능
  • Array, Dictionary, Set, Optional 등에서 사용 가능
  • 기존 컨테이너 값은 유지, 새로운 컨테이너 생성됨
  • 즉, 기존 데이터 변형 시에 많이 사용
let numArr = [2, 4, 6, 8]
var doubleNumArr = numArr.map { $0 * 2 }

print(doubleNumArr)	// [4, 8, 12, 16]

compactMap

  • 기존 컨테이너 값을 압축시킨다는 의미
  • 기존 컨테이너에 옵셔널 값이 있다면 해당 옵셔널 값은 제외하고, 새로운 컨테이너에 값을 넣어줌
let nums = ["1", "2", "dsfd", "34!!", "5"]
let compact = nums.compactMap { Int($0) }

print(compact)	// [1, 2, 5]

Filter

  • 내부 값 필터링해 추출
  • 필터링 된 값들을 새로운 컨테이너에 담아서 반환
  • 새로운 기준을 가지고, 그 기준에 맞는 값들을 반환
let nums = [10, 2, 34, 45, 11]
var filtered = nums.filter{ $0 > 5 }

print(filtered)	 // [10, 34, 45, 11]
let x = [10, 3, 20, 15, 4]
    .filter { $0 > 5 }
    .map { $0 * 100 }.sorted()

Reduce

  • 컨테이너 내부 요소들을 하나로 합치는 기능
  • 배열이라면, 배열의 모든 요소들을 인자로 전달받아서 클로저의 연산 결과로 합해줌
let nums = [1, 2, 3, 4, 5]
var sum = nums.reduce(0, +)

print(sum)	// 15 
profile
안다고 착각하지 말기

0개의 댓글