0Pricing
Swift Academy · 강의

filter와 조건자

조건을 만족하는 요소를 선택합니다.

filter와 조건자은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

filter란 무엇인가요?

filter는 클로저(조건자)가 true를 반환하는 요소만 유지합니다.

  • 클로저는 Bool을 반환합니다.
  • 요소 형식은 그대로 유지됩니다.
  • 결과는 더 작을 수 있는 새 배열입니다.

간단한 filter

짝수인 numbers만 유지합니다.

let numbers = [1, 2, 3, 4, 5, 6]
let evens = numbers.filter { $0 % 2 == 0 }
print(evens)  // [2, 4, 6]

문자열 필터링

길이가 세 문자보다 긴 words만 유지합니다.

let words = ["hi", "swift", "go", "filter"]
let long = words.filter { $0.count > 3 }
print(long)  // ["swift", "filter"]

조건자란 무엇인가요?

조건자는 값을 받아 Bool을 반환하는 단순한 함수입니다. filter는 요소마다 조건자를 한 번씩 호출하고, 조건자가 true일 때 해당 값을 유지합니다.

조건자 이름 지정하기

가독성을 높이기 위해 조건자를 저장하고 재사용할 수 있습니다.

let isPositive: (Int) -> Bool = { $0 > 0 }
let data = [-2, 5, -1, 8]
print(data.filter(isPositive))  // [5, 8]

조건 결합하기

조건자 안에서 불리언 연산자를 사용합니다.

let nums = [1, 2, 3, 4, 5, 6, 7, 8]
let picked = nums.filter { $0 % 2 == 0 && $0 > 4 }
print(picked)  // [6, 8]

구조체 필터링

속성을 기준으로 모델 객체 컬렉션을 필터링합니다.

struct Product { let name: String; let price: Int }
let items = [Product(name: "Pen", price: 2), Product(name: "Bag", price: 40)]
let cheap = items.filter { $0.price < 10 }
print(cheap.map { $0.name })  // ["Pen"]

filter와 매핑 비교

두 함수는 서로 다른 질문에 답합니다. filter는 어떤 요소를 남길지 선택하고, map은 각 요소를 변경합니다. 결과 형식도 다릅니다.

let n = [1, 2, 3, 4]
print(n.filter { $0 > 2 })  // [3, 4]  (subset, same type)
print(n.map { $0 > 2 })     // [false, false, true, true]

filter와 매핑 연결하기

먼저 필터링하여 처리할 양을 줄인 다음 변환합니다.

let nums = [1, 2, 3, 4, 5, 6]
let result = nums
    .filter { $0 % 2 == 0 }
    .map { $0 * $0 }
print(result)  // [4, 16, 36]

유지하지 않고 개수 세기

개수만 필요하다면 filter(...).count도 작동하지만, count(where:)를 사용하면 배열을 만들지 않아도 됩니다.

let votes = [true, false, true, true]
let yes = votes.filter { $0 }.count
print(yes)  // 3

딕셔너리 필터링

딕셔너리에 filter를 적용하면 일치하는 키/값 쌍으로 이루어진 딕셔너리가 반환됩니다.

let ages = ["Ann": 30, "Bo": 17, "Cy": 22]
let adults = ages.filter { $0.value >= 18 }
print(adults.keys.sorted())  // ["Ann", "Cy"]

빠른 확인

filter 조건자는 무엇을 반환해야 하나요?

복습

필터링을 배웠습니다.

  • filter는 조건자가 true인 요소를 유지합니다.
  • 조건자는 값을 Bool로 변환하는 모든 함수입니다.
  • 요소 형식은 유지되며 배열은 더 작아질 수 있습니다.
  • && 및 ||로 조건을 결합하고 map과 연결할 수 있습니다.

다음 주제: reduce

자주 묻는 질문

“filter와 조건자” 강의는 무료인가요?

네 — “filter와 조건자” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“filter와 조건자”에서 뭘 배우나요?

조건을 만족하는 요소를 선택합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Swift Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“filter와 조건자” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. map과 compactMap
  2. filter와 조건자
  3. reduce와 reduce(into:)
  4. flatMap과 연결
← Swift Academy(으)로 돌아가기