Post

Day 23 - TIL

Swift 고차함수

Day 23 - TIL

📘 Day 23 - Today I Learned

🔍 Today’s Error or Issue

처음에는 map, filter, reduce 등의 고차함수가 왜 필요한지, 언제 사용하는지 감이 잘 안 왔다. 특히 reduce의 초기값 설정이나, compactMap과 flatMap의 차이가 혼란스러웠다.

🛠️ Troubleshooting

  • 각각의 고차함수가 배열의 순회 + 변형/필터/누적을 함수로 깔끔하게 표현할 수 있게 해주는 도구라는 걸 알게 되면서 이해가 쉬워졌다.
  • 직접 for-in 루프와 비교해서 리팩토링해보며 map, filter, reduce가 훨씬 선언적이고 간결하다는 걸 체감함.

📝 Learning Summary

✅ 고차함수란?

함수를 인자로 받거나, 함수를 반환하는 함수

Swift 배열에서 자주 쓰이는 대표적인 고차함수:

1
2
3
4
5
6
7
8
9
10
11
let numbers = [1, 2, 3, 4, 5]

let squared = numbers.map { $0 * $0 } // [1, 4, 9, 16, 25]

let even = numbers.filter { $0 % 2 == 0 } // [2, 4]

let sum = numbers.reduce(0) { $0 + $1 } // 15

let sortedDesc = numbers.sorted { $0 > $1 } // [5, 4, 3, 2, 1]

let nonNil = ["1", "a", "3"].compactMap { Int($0) } // [1, 3]
함수설명
map각 요소를 변형
filter조건에 맞는 요소 추출
reduce누적값 계산
sorted 정리정렬
compactMapnil 제거 + 변형
flatMap중첩 배열 평탄화

📘 Lesson Learned

고차함수는 코드의 간결함과 가독성을 크게 높여주고, 명령형에서 선언형 스타일로 사고를 바꾸게 해준다. 처음엔 어렵게 느껴졌지만, 익숙해지면 for 루프보다 훨씬 직관적으로 문제를 표현할 수 있다.

This post is licensed under CC BY 4.0 by the author.